home *** CD-ROM | disk | FTP | other *** search
/ Magnum One / Magnum One (Mid-American Digital) (Disc Manufacturing).iso / d12 / bossa.arc / BOSS_DOC.ARC / BOSS.MAN next >
Text File  |  1990-03-12  |  248KB  |  8,291 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.  
  11.  
  12.                                  The Window BOSS
  13.                                         &
  14.                                    Data Clerk
  15.  
  16.  
  17.                                 Revision 02.15.90
  18.  
  19.  
  20.  
  21.  
  22.  
  23.                          Star Guidance Consulting, Inc.
  24.                                  273 Windy Drive
  25.                           Waterbury, Connecticut 06705
  26.  
  27.                                  (203) 574-2449
  28.  
  29.  
  30.  
  31.  
  32.                                _______
  33.                           ____|__     |               (tm)
  34.                        --|       |    |-------------------
  35.                          |   ____|__  |  Association of
  36.                          |  |       |_|  Shareware
  37.                          |__|   o   |    Professionals
  38.                        -----|   |   |---------------------
  39.                             |___|___|    MEMBER
  40.  
  41.  
  42.  
  43.  
  44.  
  45.                 Copyright (c) 1984-1990 by Philip A. Mongelluzzo
  46.                                All Rights Reserved.
  47.  
  48.  
  49.  
  50.  
  51.  
  52.         The Window BOSS Shareware diskette,  containing a copy of this 
  53.         manual  may  be freely copied and shared,  but printed copies  of 
  54.         this document may not be copied in any way without permission  in 
  55.         writing from Star Guidance Consulting.  Thank you.  
  56.                                                      The Window BOSS
  57.  
  58.  
  59.  
  60.         1. Introduction
  61.  
  62.         The Window BOSS is one of the most powerful and cost-effective 
  63.         products available to enhance and accelerate the development of 
  64.         system and applications programs in the "C" language.  The BOSS 
  65.         will let you create programs that have the same look and feel as 
  66.         top sellers like Lotus 1-2-3, Sidekick, dBASE III, and Framework!  
  67.         Pop-up windows, pull down menus, status lines, and in context on-
  68.         line help functions can be easily implemented.  Your applications 
  69.         can drag windows around the screen and automatically sense the 
  70.         video card installed.  All of this without snow, flicker, or 
  71.         delay! 
  72.  
  73.         The BOSS's assistant, The Data Clerk is always on call to handle 
  74.         the tasks associated with data entry.  Whether they be as simple 
  75.         as fetching a line of text or as complicated as the coordination 
  76.         of filling out a form, the Data Clerk will be there to assist, 
  77.         and if necessary, validate precious information as it is entered.
  78.  
  79.         Registered users can take advantage of our "Source Plus" policy 
  80.         that provides meticulously commented source code, technical 
  81.         support, and minimal fee updates.
  82.  
  83.         2. Technical Nitty Gritties
  84.  
  85.         The Window BOSS supports PC/MSDOS for the IBM PC/XT/AT, PS/2 and 
  86.         compatiables.   However, you'll need one of the following 
  87.         compilers in order to take advantage of the state-of-the-art 
  88.         techniques available from the BOSS:
  89.  
  90.                              Lattice C, Microsoft C
  91.                        Microsoft Quick C, Borland Turbo C
  92.                       Computer Innovations CI86, Datalight     
  93.                        Watcom & Watcom Express C, Zortech
  94.                               Aztec C, Mix Power C
  95.  
  96.         The BOSS is written in "C" and assembly language.  You'll need 
  97.         the Microsoft Assembler, MASM, to assemble any local changes to 
  98.         the assembler source.
  99.  
  100.           Stats:
  101.  
  102.              Maximum windows:    limited only by compiler and memory
  103.              Maximum window:     full screen (25x80, 43x80, 50x80)
  104.              Minimum window:     1 row 1 column (borderless)
  105.                                  3 rows 3 columns (framed)
  106.              Minimum fields:     none
  107.              Maximum fields:     limited only by compiler and memory
  108.  
  109.           Operation:
  110.  
  111.              Simply include the library at link time and invoke the 
  112.              function desired.  
  113.  
  114.  
  115.  
  116.                                                            Page: 1
  117.                                                      The Window BOSS
  118.  
  119.  
  120.  
  121.         3. User Supported Software
  122.  
  123.         Star Guidance Consulting distributes The Window BOSS with a 
  124.         unique marketing approach called Shareware.  The Shareware 
  125.         diskette with the programs and manual may be freely copied and 
  126.         shared.  It is also available from Star Guidance for $20.00. We 
  127.         ask you to help us distribute The Window BOSS by sharing 
  128.         unmodified copies of the Shareware diskette with others.  We also 
  129.         encourage you to register your copy for $55.00.  You'll find a 
  130.         registration form at the end of this manual.  Thank you for your 
  131.         support and enjoy the BOSS.  
  132.  
  133.         3.1. Registering
  134.  
  135.         Shareware is a term for software that can be freely copied and 
  136.         shared.  The term describes copyrighted software which the author 
  137.         supports and encourages people to copy and share.
  138.  
  139.         Shareware is like public television:  the programming is freely 
  140.         distributed, but support from users is encouraged.  The concept 
  141.         is based on these principles:
  142.  
  143.           1. People need to try programs to see if they are useful.
  144.           2. Software authors can be supported directly by users.
  145.           3. Copying and networking of programs can be encouraged.
  146.  
  147.         We encourage you to register your copy of The Window BOSS for 
  148.         $55.00.  Registration has a number of benefits to you:
  149.  
  150.           1. Serialized diskette containing all source code for all 
  151.              supported compilers.
  152.           2. Telephone Support and minimal fee updates.
  153.              Minimial fees cover the cost of media, shipping, handling, 
  154.              and update preparation.
  155.           3. Thanks from us for your support and encouragement!
  156.  
  157.         3.2. Support Services
  158.  
  159.         You may call or write for support services. Unless the problem is 
  160.         relatively complex, you will get the best results by calling. If 
  161.         you write, please include a phone number and the times when you 
  162.         will be available. Our response to written questions is much 
  163.         slower, but we do give priority to overseas users. We are 
  164.         available between 9AM and 5PM Monday through Friday, and 
  165.         sometimes on Saturday and Sunday.
  166.  
  167.  
  168.  
  169.  
  170.  
  171.  
  172.  
  173.  
  174.  
  175.  
  176.  
  177.                                                            Page: 2
  178.                                                      The Window BOSS
  179.  
  180.  
  181.  
  182.         Support Services - continued.
  183.  
  184.  
  185.  
  186.         With reference to calls, if we do not call back, please remember 
  187.         that about 15% of our call backs do not get completed because of 
  188.         faulty phone numbers, unanswered, or busy phones. If we have not 
  189.         called back within 1 work day, call us again.  Frequent, 
  190.         difficult to reach, or foreign callers can expect "person to 
  191.         person" collect return calls.
  192.  
  193.         3.2.1. Electronic Support
  194.  
  195.         Electronic support is provided on both GENIE and CompuServe.  
  196.         Support previously provided by our BBS is now provided on these 
  197.         services.  You are strongly advised to obtain a USER ID on at 
  198.         least one of these fine services as no other form of electronic 
  199.         support can be provided.
  200.  
  201.         On GENIE, a special topic on the IBM PC Round Table Bulletin 
  202.         Board has been set up to provide support to Window BOSS users.  
  203.         The Window BOSS topic can be found in the "On-Line Product 
  204.         Support" category of the Bulletin Board.  As of this writing, 
  205.         The IBM PC Round Table main menu is page 615 and the "On-Line 
  206.         Product Support" category is category # 9 of the Round Table's 
  207.         Bulletin Board.  Simply move to page 615 by typing "M 615", 
  208.         select the IBM PC Round Table Bulletin Board from the menu by 
  209.         typing "1", then SET the category by typing "SET 9".  Reading and 
  210.         entering messages is straight forward. The on-line help system 
  211.         and GENIE's user guide should assist you if you have questions.  
  212.         If you prefer, you can leave mail addressed to MONGELLUZZO.  
  213.         Round Table and Mail messages are answered on a daily basis.  If 
  214.         you need information on obtaining a GENIE account  you can call 
  215.         GENIE toll free at 1-800-638-9636.
  216.  
  217.         CompuServe electronic correspondence is limited to EMAIL.  Our 
  218.         EMAIL ID is [71565,1001].  SIG(s) are also ocassionaly checked 
  219.         for messages but should not be considered a vehicle for effective 
  220.         communication to Star Guidance.  If you are a CompuServe user and 
  221.         you need to reach us, use EMAIL.  EMAIL messages are answerd on a 
  222.         daily basis.  If you need information on obtaining a CompuServe 
  223.         account you can call CompuServe toll free at 1-800-848-8199.
  224.  
  225.  
  226.  
  227.  
  228.  
  229.  
  230.  
  231.  
  232.  
  233.  
  234.  
  235.  
  236.  
  237.  
  238.                                                            Page: 3
  239.                                                      The Window BOSS
  240.  
  241.  
  242.  
  243.         4. The Basics
  244.  
  245.         The Window BOSS is an extensive library of C functions for the 
  246.         creation, the management and the manipulation of text windows.  
  247.         We take care of all the housekeeping and let you, the programmer, 
  248.         get on with developing your application with a minimum of fuss.
  249.  
  250.         Both The Window BOSS and The Data Clerk are based on a layered 
  251.         software design in which powerful, easy to use functions are 
  252.         created from a series of lower level primitives.  As a 
  253.         programmer, you will quickly appreciate our clean and uncluttered 
  254.         approach to getting the job done.
  255.  
  256.         Windows are created and defined by opening them. Once created, 
  257.         you can write to them, move them around, change their attributes, 
  258.         use them as the basis for data entry, or "kill" them by closing 
  259.         them.  Windows are nothing more than a sub display of a larger 
  260.         display - the physical screen.  They are defined to have size, 
  261.         location, and attributes like foreground color, background color, 
  262.         border colors and so on.  The BOSS includes a whole host of 
  263.         functions for defining and manipulating your windows.
  264.  
  265.         Windows can also serve as the backdrop for data entry.  Once a 
  266.         window is created, you can use it to convey information or to 
  267.         retrieve it!  The Data Clerk will assist you in obtaining the 
  268.         desired goal, whether it be as simple as a single line of text or 
  269.         as complex as a complete form. 
  270.  
  271.         Forms are an ordered collection of input requests (fields) that 
  272.         occur within a specific window.  Fields have size, location 
  273.         (relative to the window which they will be displayed in), and 
  274.         attributes (foreground color, background color, mask values, fill 
  275.         characters, type [integer, float, long, text], validation 
  276.         ranges) and so on.  Like windows, forms are created by opening 
  277.         them.  Their contents must then be defined by using the field 
  278.         definition functions provided, or with your own custom field 
  279.         definition functions.  Once created and defined, a form becomes 
  280.         part of the window and moves with it. Forms are "killed" by 
  281.         closing them (n.b. killing a form has no effect on the window to 
  282.         which it was anchored or to the information displayed in it, form 
  283.         or otherwise). The same functions used to input single data items 
  284.         are used to build forms.  This consistency, coupled with an 
  285.         uncluttered approach and flexibility, gives The Window BOSS its 
  286.         power.    
  287.  
  288.  
  289.  
  290.  
  291.  
  292.  
  293.  
  294.  
  295.  
  296.  
  297.  
  298.  
  299.                                                            Page: 4
  300.                                                      The Window BOSS
  301.  
  302.  
  303.  
  304.         4.1. Window Basics
  305.  
  306.         Here is the famous "hello" program!  As you can see it's pretty 
  307.         simple to get windows into your applications with The Window 
  308.         BOSS!!  You should review this code in conjunction with the 
  309.         function descriptions found in this manual and the concepts 
  310.         outlined in the Important Concepts section following the 
  311.         examples.
  312.  
  313.         #include "windows.h"            /* REQUIRED */
  314.         main()
  315.         {
  316.         WINDOWPTR w1;                   /* window handle */
  317.         int batrib;                     /* border atrib */
  318.         int watrib;                     /* window atrib */
  319.  
  320.         /*
  321.          * Set attributes:
  322.          *
  323.          *      border - blue/white box
  324.          *      window - white background/black letters
  325.          *
  326.         */
  327.  
  328.           batrib = (BLUE << 4) | WHITE; /* border atrib */
  329.           watrib = (WHITE <<4) | BLACK; /* window atrib */
  330.  
  331.         /*
  332.          * Open window at 0,0 - 25 cells wide and 10 cells high
  333.         */
  334.  
  335.           w1 = wn_open(0,0,0,25,10,watrib,batrib);
  336.           if(!w1) exit();       
  337.  
  338.         /*
  339.          * Print the famous string and wait for key to be struck.
  340.          * Close window on key strike.. exit.
  341.         */
  342.  
  343.           wn_printf(w1,"Hello World...");
  344.           v_getch();                    /* wait for key */
  345.           wn_close(w1);                 /* close the window */
  346.           exit(0);                      /* and exit */
  347.         }
  348.  
  349.         /* End */
  350.  
  351.  
  352.  
  353.  
  354.  
  355.  
  356.  
  357.  
  358.  
  359.  
  360.                                                            Page: 5
  361.                                                      The Window BOSS
  362.  
  363.  
  364.  
  365.         4.2. Data Entry Basics
  366.  
  367.         Lets expand our "hello" program to prompt and fetch a name.
  368.  
  369.         #include "windows.h"            /* REQUIRED */
  370.         main()
  371.         {
  372.         WINDOWPTR w1;                   /* window handle */
  373.         int batrib;                     /* border atrib */
  374.         int watrib;                     /* window atrib */
  375.         char name[15];                  /* name */
  376.  
  377.         /*
  378.          * Set attributes:
  379.          *
  380.          *      border - blue/white box
  381.          *      window - white background/black letters
  382.          *
  383.         */
  384.  
  385.           batrib = (BLUE << 4) | WHITE; /* border atrib */
  386.           watrib = (WHITE <<4) | BLACK; /* window atrib */
  387.  
  388.         /*
  389.          * Open window at 0,0 - 25 cells wide and 10 cells high
  390.         */
  391.  
  392.           w1 = wn_open(0,0,0,25,10,watrib,batrib);
  393.           if(!w1) exit();       
  394.  
  395.         /*
  396.          * Print the famous string, prompt and fetch a name, 
  397.          * wait for key to be struck.
  398.          * Close window on key strike.. exit.
  399.         */
  400.  
  401.           wn_printf(w1,"Hello World...");
  402.  
  403.           *name = NUL;                  /* init buffer for name */
  404.           wn_gtext(XEQ,NFRM,NFLD,w1,2,1,"Name: ",watrib,'_',15,name,NSTR,NSTR);
  405.  
  406.           v_getch();                    /* wait for key */
  407.           wn_close(w1);                 /* close the window */
  408.           exit(0);                      /* and exit */
  409.         }
  410.  
  411.         /* End */
  412.  
  413.  
  414.  
  415.  
  416.  
  417.  
  418.  
  419.  
  420.  
  421.                                                            Page: 6
  422.                                                      The Window BOSS
  423.  
  424.  
  425.  
  426.         4.3. Form Basics
  427.  
  428.         Now we will expand a bit further to read a 2 field form.
  429.  
  430.         #include "windows.h"            /* REQUIRED */
  431.         main()
  432.         {
  433.         WINDOWPTR w1;                   /* window handle */
  434.         WIFORM f1;                      /* form handle */
  435.         int batrib;                     /* border atrib */
  436.         int watrib;                     /* window atrib */
  437.         char name[15];                  /* name */
  438.         char city[15];                  /* city */
  439.  
  440.         /*
  441.          * Set attributes:
  442.          *
  443.          *      border - blue/white box
  444.          *      window - white background/black letters
  445.          *
  446.         */
  447.  
  448.           batrib = (BLUE << 4) | WHITE; /* border atrib */
  449.           watrib = (WHITE <<4) | BLACK; /* window atrib */
  450.  
  451.         /*
  452.          * Open window at 0,0 - 25 cells wide and 10 cells high
  453.         */
  454.  
  455.           w1 = wn_open(0,0,0,25,10,watrib,batrib);
  456.           if(!w1) exit();       
  457.  
  458.         /*
  459.          * Print the famous string, create, define, and fetch form
  460.          * wait for key to be struck.
  461.          * Close window on key strike.. exit.
  462.         */
  463.  
  464.           wn_printf(w1,"Hello World...");
  465.  
  466.           *name = NUL;                  /* init buffer for name */
  467.           *city = NUL;                  /* init buffer for city */
  468.           f1 = wn_frmopn(3);            /* open form 2 + 1 Fields */
  469.           wn_gtext(SET,f1,0,w1,2,1,"Name: ",watrib,'_',15,name,NSTR,NSTR);
  470.           wn_gtext(SET,f1,1,w1,3,1,"City: ",watrib,'_',15,city,NSTR,NSTR);
  471.           wn_frmget(f1);                /* read the form */
  472.  
  473.           v_getch();                    /* wait for key */
  474.           wn_frmcls(f1);                /* first close the form */
  475.           wn_close(w1);                 /* then close the window */
  476.           exit(0);                      /* and exit */
  477.         }
  478.  
  479.  
  480.  
  481.  
  482.                                                            Page: 7
  483.                                                      The Window BOSS
  484.  
  485.  
  486.  
  487.         4.4. Mouse Basics
  488.  
  489.         The Window BOSS includes a collection of routines that provide 
  490.         the building blocks for developing applications that incorporate 
  491.         Mouse support.  As a programmer you will need three things:
  492.  
  493.              . The mouse and its associated hardware
  494.  
  495.              . The mouse driver software
  496.  
  497.              . C and/or Assembly level functions to communicate with the 
  498.                mouse
  499.  
  500.         The first two (of the above) are provided by the mouse 
  501.         manufacturer and must be installed as outlined in the 
  502.         manufacture's literature.  The last item is provided as part of 
  503.         The Window BOSS. The Window BOSS's mouse functions adhere to the 
  504.         de facto Microsoft standard. However, all of the routines have 
  505.         been extensively tested with both Microsoft and Logitech mice.
  506.  
  507.         Mouse Communication
  508.  
  509.         The only practical method of communicating with the mouse is 
  510.         through the mouse device driver, which is accessible via software 
  511.         interrupt 33H.  This interrupt is not used by DOS and is claimed 
  512.         by the mouse device driver at its invocation.  Information is 
  513.         exchanged between the mouse device driver and calling software 
  514.         via the standard 8086/88 registers. As a Window BOSS user you 
  515.         will be pleased to know that the burden of having to deal with 
  516.         the mouse at this level has be replaced by a collection of "C" 
  517.         level routines that handle all of the aforementioned setup, 
  518.         software interrupts and register loading/unloading!!
  519.  
  520.         Mouse Usage
  521.  
  522.         Once the mouse has been initialized (reset), you can show it, 
  523.         hide it, move it, ask it where it is, check to see if its buttons 
  524.         have been pressed or released, make it emulate a light pen, put a 
  525.         cage around it (set its region), define its shape and associated 
  526.         attribute, or ask it how many buttons it has!
  527.  
  528.         Mouse Functions
  529.  
  530.         The standard Microsoft mouse supports 16 functions. Logitech's 
  531.         are the same, although some are tweaked a tad to handle the 3rd 
  532.         button.  The Window BOSS provides an easy to use interface to the 
  533.         low level mouse functions and several higher level functions to 
  534.         ease your applications level programming.
  535.  
  536.  
  537.  
  538.  
  539.  
  540.  
  541.  
  542.  
  543.                                                            Page: 8
  544.                                                      The Window BOSS
  545.  
  546.  
  547.  
  548.         Mouse Basics - continued.
  549.  
  550.  
  551.  
  552.         Mouse Functions - continued.
  553.  
  554.         The following table summarizes the 16 Microsoft Mouse Functions:
  555.  
  556.              Function       Description              Window BOSS Function
  557.  
  558.                 0           Initialize mouse         mo_reset()
  559.                 1           Show mouse               mo_show()
  560.                 2           Hide mouse cursor        mo_hide()
  561.                 3           Get position & status    mo_pos()
  562.                 4           Set mouse position       mo_move()
  563.                 5           Get button press info    mo_pbinfo()
  564.                 6           Get button release info  mo_rbinfo()
  565.                 7           Set min/max columns      mo_clim()
  566.                 8           Set min/max rows         mo_rlim()
  567.                 9 *         Define graphics pointer  mo_sgcursor()
  568.                10           Define text pointer      mo_scursor()
  569.                11           Read motion counters     mo_motion()
  570.                12 *         Define event handler     mo_task()
  571.                13           Light pen emulation on   mo_lpon()
  572.                14           Light pen emulation off  mo_lpoff()
  573.                15 *         Set motion pixel ratio   mo_ratio()
  574.  
  575.         In addition to the above low level interface routines, the 
  576.         following application's level functions have been implemented to 
  577.         ease the mouse's natural display adapter sensitivity.  Without 
  578.         these routines, mouse applications would have to deal with the 
  579.         mouse in a 640x200-pixel plane - even in text mode!
  580.  
  581.              mo_rcpos()     Return current mouse position (row, col)
  582.              mo_locate()    Locate mouse (row, col)
  583.              mo_press()     Get button pressed info (button, location..)
  584.              mo_release()   Get button released info ( " " " " " " " " )
  585.              mo_region()    Set mouse hot area (row, col, width, height)
  586.              mo_setptr()    Set mouse pointer (style, attributes)
  587.              mo_wait()      Wait for mouse to settle (de bouncing logic)
  588.              mo_nbut()      Return # of buttons on mouse
  589.  
  590.         Most mouse applications will use and generally only need to use: 
  591.         mo_reset(), mo_show(), mo_hide(), and most or all of the 
  592.         application level functions.  
  593.  
  594.         The low level functions are provided for those who prefer to deal 
  595.         with the mouse on its 640 x 200 pixel plane.
  596.  
  597.         All of the above supported functions are documented in the 
  598.         FUNCTION CALL SYNOPSIS section of this manual.
  599.  
  600.         * Interfaces to these functions are provided but are not supported 
  601.         by Star Guidance.
  602.  
  603.  
  604.                                                            Page: 9
  605.                                                      The Window BOSS
  606.  
  607.  
  608.  
  609.         Mouse Basics - continued.
  610.  
  611.  
  612.  
  613.         Mouse Programming Example (Basic)
  614.  
  615.         #include "windows.h"                    /* ALWAYS */
  616.  
  617.         main()
  618.         {
  619.         MOUSEPTR m1;                            /* my mouse ptr */
  620.         int mstat, mclik, mrow, mcol;           /* mouse stuff */
  621.         int i;                                  /* scratch */
  622.  
  623.           v_cls(NORMAL);                        /* clear the screen */
  624.           v_locate(0,0,0);                      /* locate the cursor */
  625.  
  626.           m1 = mo_reset();                      /* init mouse */
  627.  
  628.           if(m1) {                              /* mouse exists */
  629.             printf("Mouse exists with %d buttons.\n", mo_nbutt(m1));
  630.             mo_setptr(m1, 0x1E, NORMAL);        /* set mouse pointer style */
  631.             mo_reigon(m1, 0, 0, 80, 25);        /* set mouse "window" */
  632.             mo_show(m1);                        /* show the critter */
  633.  
  634.             v_locate(0,5,0);
  635.             printf("Roll test... move mouse, click left or right to end.\n");
  636.             do {                                /* rolling test */
  637.               mo_rcpos(m1, &mstat, &mrow, &mcol);
  638.               v_locate(0,6,0);
  639.               printf("Mouse @ %03d,%03d", mrow, mcol);
  640.             } while (!mstat);
  641.  
  642.             v_cls(NORMAL);                      /* clear screen */
  643.             v_locate(0,0,0);                    /* home cursor */
  644.             mo_hide(m1);                        /* hide mouse */
  645.             m1 = mo_reset();                    /* reset mouse */
  646.             exit(0);                            /* finito */
  647.           }
  648.           else {
  649.             printf("NO MICE HERE!!\n");         /* tell of woe... */
  650.             exit(0);                            /* exit */
  651.           }
  652.         }
  653.  
  654.         /* End */
  655.  
  656.  
  657.  
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.  
  665.                                                            Page: 10
  666.                                                      The Window BOSS
  667.  
  668.  
  669.  
  670.         4.5. Important Concepts
  671.  
  672.         The preceding programming examples serve as the foundation for 
  673.         some fundamental, but very important concepts.  
  674.  
  675.         4.5.1. WINDOWS.H
  676.  
  677.         The Window BOSS requires the file "windows.h" to be included in 
  678.         any source code files that are going to reference any of the 
  679.         windowing, data entry, or form control functions.  Take the time 
  680.         to peruse this file as it contains all of the constants and 
  681.         structures used by both The Window BOSS and Data Clerk.  
  682.         Also, please note that WINDOWS.H includes other standard compiler 
  683.         header files.
  684.  
  685.         4.5.2. Window Handles
  686.  
  687.         All windowing functions (any function beginning with "wn_") 
  688.         either explicitly require an associated window pointer to work, 
  689.         or assume one already is, or will be, created.  
  690.  
  691.         4.5.3. Mouse Handles
  692.  
  693.         All mouse functions (any function beginning with "mo_") 
  694.         either explicitly require an associated mouse pointer to work, 
  695.         or assume one already is, or will be, created.  
  696.  
  697.         4.5.4. Window Origin
  698.  
  699.         Windows have an origin relative to the upper left hand corner of 
  700.         the screen which is row 0, and column 0.
  701.  
  702.         4.5.5. Text and Data Field Origins
  703.  
  704.         Text and data fields have an origin relative to the upper left 
  705.         hand corner of the window, which is always row 0, column 0.
  706.  
  707.         4.5.6. Attributes
  708.  
  709.         Attributes (foreground/background colors) must be specified for 
  710.         windows, borders, and data entry fields.  Prompts for data entry 
  711.         fields always have the same attributes as the window. The fields 
  712.         themselves can have, but do not require, a different attribute 
  713.         set.
  714.  
  715.  
  716.  
  717.  
  718.  
  719.  
  720.  
  721.  
  722.  
  723.  
  724.  
  725.  
  726.                                                            Page: 11
  727.                                                      The Window BOSS
  728.  
  729.  
  730.  
  731.         4.5.7. Fields and Forms
  732.  
  733.         Fields are defined by calling the field definition functions 
  734.         (wn_gdate, wn_gtime, wn_gphone, ...) with "SET" as the function 
  735.         code (1st arg), a valid form handle (2nd arg), a field sequence 
  736.         number (3rd arg), and the window handle (4th arg) belonging to 
  737.         the window in which the form is to be displayed.  The same 
  738.         functions that are used to retrieve discrete information can be 
  739.         combined to create a form when used in conjunction with 
  740.         wn_frmopn() and wn_frmget().  Note the use of XEQ vs. SET, NFRM 
  741.         vs. f1, and NFLD in the preceding two program examples.  XEQ 
  742.         stands for "execute now", while SET stands for "set up for later 
  743.         execution under wn_frmget()".
  744.  
  745.         Forms are anchored to a particular window and must be created by 
  746.         wn_frmopn() and defined with field definition functions.
  747.  
  748.         Data entry fields can be edited, pre-filled, have validation 
  749.         ranges, and have both help and error messages associated with 
  750.         them.  
  751.  
  752.         4.5.8. Return Values
  753.  
  754.         Some functions return an indication of success or failure which 
  755.         you can foolishly ignore, or check to determine what action to 
  756.         take.
  757.  
  758.         4.5.9. Closing Forms and Windows
  759.  
  760.         Both forms and windows should be closed when they are no longer 
  761.         needed.  Although you can close them in any order, it makes sense 
  762.         to close all forms associated with a window before closing the 
  763.         window itself.  As a side note - attempting to reference either 
  764.         forms or windows which have been closed can lead to unpredictable 
  765.         results.
  766.  
  767.  
  768.  
  769.  
  770.  
  771.  
  772.  
  773.  
  774.  
  775.  
  776.  
  777.  
  778.  
  779.  
  780.  
  781.  
  782.  
  783.  
  784.  
  785.  
  786.  
  787.                                                            Page: 12
  788.                                                      The Window BOSS
  789.  
  790.  
  791.  
  792.         Important Concepts - continued.
  793.  
  794.  
  795.  
  796.         4.5.10. Overlapping Windows
  797.  
  798.         The Window BOSS fully supports the concept of overlapping 
  799.         windows, that is to say that you can have several windows on the 
  800.         screen at the same time and freely access any one of them without 
  801.         having to be concerned with the order in which they were opened 
  802.         or whether or not any other windows overlap the one you wish to 
  803.         access.  The Window BOSS employs the "most recently used is 
  804.         active" concept.  This concept is based on the following:
  805.  
  806.              . The last window referenced is the current active 
  807.                window.  
  808.  
  809.              . The current active window is always the top window.
  810.  
  811.         For example, let us assume that you have opened three overlapping 
  812.         windows in the following order; w1, w2, w3. w3 is considered to 
  813.         be the top window because it was the last window referenced. If 
  814.         you now reference, or explicitly activate w2, The Window BOSS 
  815.         will automatically adjust the screen image to insure that w2 is 
  816.         now the top window with w3 and w1 being partially hidden by w2.
  817.  
  818.                   Before                   After
  819.  
  820.                   +----------+             +----------+
  821.                   |  W1      |             | W1       |
  822.                   |  +----------+          |  +----------+
  823.                   |  | W2       |          |  | W2       |
  824.                   |  |  +------------+     |  |          |----+
  825.                   |  |  | W3         |     |  |          | W3 |
  826.                   |  |  |            |     |  |          |    |
  827.                   |  |  +------------+     |  |          |----+
  828.                   |  |          |          |  |          |
  829.                   |  +----------+          |  +----------+
  830.                   |          |             |          |
  831.                   +----------+             +----------+
  832.  
  833.         It is extremely important to keep in mind that The Window BOSS 
  834.         will automatically activate (bring to the top) the window being 
  835.         referenced.  By keeping your screen layouts attractive and 
  836.         uncluttered there will be a minimum of window thrashing which is 
  837.         both annoying and time consuming.
  838.  
  839.  
  840.  
  841.  
  842.  
  843.  
  844.  
  845.  
  846.  
  847.  
  848.                                                            Page: 13
  849.                                                      The Window BOSS
  850.  
  851.  
  852.  
  853.         Important Concepts - continued.
  854.  
  855.  
  856.  
  857.         4.5.11. Functions
  858.  
  859.         The Window BOSS's functions fall into four major groups: those 
  860.         that manipulate windows, those that deal with data entry, those 
  861.         that deal with the mouse, and those that deal with the video or 
  862.         keyboard interface at a relatively low level.  All window and 
  863.         data manipulation functions begin with the prefix "wn_" as in 
  864.         "wn_open".  All mouse functions begin with "mo_" as in 
  865.         "mo_reset", while all video and keyboard based functions begin 
  866.         with "v_" or "_" as in "v_getch" and "_putch".  This convention 
  867.         makes it easy to remember where to look when you want to do 
  868.         something.  Additionally, there are several global functions 
  869.         which begin with "wns_".  These functions, although visible to 
  870.         the outside world, are used internally by The Window BOSS. 
  871.  
  872.         So ends the tale of the basics, you are now ready to add sizzle, 
  873.         bright lights, and artistic touches to all your applications!  
  874.  
  875.  
  876.  
  877.  
  878.  
  879.  
  880.  
  881.  
  882.  
  883.  
  884.  
  885.  
  886.  
  887.  
  888.  
  889.  
  890.  
  891.  
  892.  
  893.  
  894.  
  895.  
  896.  
  897.  
  898.  
  899.  
  900.  
  901.  
  902.  
  903.  
  904.  
  905.  
  906.  
  907.  
  908.  
  909.                                                            Page: 14
  910.                                                      The Window BOSS
  911.  
  912.  
  913.  
  914.         5. Distribution Methods & Media Kits 
  915.  
  916.         The Window BOSS is distributed on 5 1/4" DSDD diskettes.  There 
  917.         are two media kits available: The Shareware diskette kit and The 
  918.         Source diskette kit.  This doucument describes both media kits.  
  919.         Neither media kit contains ALL of the files listed.
  920.  
  921.         The Shareware diskettes can be freely copied and shared.  The 
  922.         Source diskettes can not. In either case you receive a bundled 
  923.         product -- that is to say, we do not require you to order a 
  924.         separate media kit for Microsoft, another for Borland, and so on.  
  925.         All our products include support for all the compilers we 
  926.         support. This makes moving from one compiler to another child's 
  927.         play, and it also helps to protect your software development 
  928.         investment, while at the same time saving you a significant sum 
  929.         of money!
  930.  
  931.         5.1. CompuServe, GENIE & Bulletin Board Files
  932.  
  933.         We always upload the latest release of shareware files to GENIE, 
  934.         CompuServe, and selected BBS(s) around the country.  These files 
  935.         can be found in the Vendor Support Software Library on the IBM 
  936.         Round Table (M 616) of GENIE and in the "C" Language Section on 
  937.         the IBM Programming Sig (GO IBMPRO) of CompuServe. In both cases 
  938.         we try to name the required files as BOSS01.LZH (code++), 
  939.         BOSS2A.LZH & BOSS2B.LZH (libs), BOSS03.LZH (documentation).  
  940.         Naturally, this naming convention is subject to the approval of 
  941.         the respective service provider.  However, it is reasonable to 
  942.         assume that the required files will always conform to a naming 
  943.         convention that begins with "BOSS" or "BOS" and have the keyword 
  944.         "windows" associated with them.  
  945.  
  946.         If you can not find The Window BOSS files on either GENIE or 
  947.         CompuServe it may be due to a restructuring of the SIGs by the 
  948.         respective service provider.  Try looking in the vendor support, 
  949.         systems, or language areas of the SIGS.
  950.  
  951.         Bulletin Board files follow the same naming conventions as GENIE 
  952.         and CompuServe files.  
  953.  
  954.         5.2. The SHAREWARE Distribution Diskette(s)
  955.  
  956.           The SHAREWARE diskette(s) contain the following files:
  957.  
  958.            Disk 1
  959.  
  960.              LHARC.DOC           <- Archive utility document
  961.              LHARC.EXE           <- Archive utility
  962.              BOSS_DOC.LZH        <- Documentation archive
  963.              BOSS_SUP.LZH        <- Support archive (code, etc.)
  964.              BOSS_LB1.LZH        <- Library archive (Microsoft)
  965.              READ.ME             <- Important notes
  966.  
  967.  
  968.  
  969.  
  970.                                                            Page: 15
  971.                                                      The Window BOSS
  972.  
  973.  
  974.  
  975.         The Shareware Distribution Diskette - continued.
  976.  
  977.  
  978.            Disk 2
  979.  
  980.              BOSS_LB2.LZH        <- Library archive (Watcom, Zortech)
  981.              BOSS_LB3.LZH        <- Library archive (Mix, Aztec, C86)
  982.              BOSS_LB4.LZH        <- Library archive (Datalight, Lattice,
  983.                                                      Borland Turbo C)
  984.  
  985.              Contents of BOSS_DOC
  986.  
  987.                BOSS.MAN          <- This manual
  988.                BOSS.TOC          <- Table of Contents
  989.  
  990.              Contents of BOSS_SUP
  991.  
  992.                AZCS.BAT          <- Compiler Driver - Aztec
  993.                C86.BAT           <- Compiler Driver - CI86
  994.                DLCS.BAT          <- Compiler Driver - Datalight
  995.                LCS3.BAT          <- Compiler Driver - Lattice 3.4
  996.                LCS6.BAT          <- Compiler Driver - Lattice 6.0
  997.                MSC5.BAT          <- Compiler Driver - Microsoft C
  998.                MSQC.BAT          <- Compiler Driver - Quick C
  999.                PCCM.BAT          <- Compiler Driver - Mix Power C
  1000.                TCS.BAT           <- Compiler Driver - Turbo C
  1001.                WECS.BAT          <- Compiler Driver - EXPRESS C
  1002.                WOCS.BAT          <- Compiler Driver - Watcom C
  1003.                ZTCS.BAT          <- Compiler Driver - Zortech C
  1004.                LOADAZ.BAT        <- Link Batch file - Aztec
  1005.                LOADC86.BAT       <- Link Batch file - CI86
  1006.                LOADDLC.BAT       <- Link Batch file - Datalight
  1007.                LOADLC3.BAT       <- Link Batch file - Lattice 3.4
  1008.                LOADLC6.BAT       <- Link Batch file - Lattice 6.0
  1009.                LOADMS5.BAT       <- Link Batch file - Microsoft C
  1010.                LOADMSQC.BAT      <- Link Batch file - Quick C
  1011.                LOADPC.BAT        <- Link Batch file - Mix Power C
  1012.                LOADTC.BAT        <- Link Batch file - Turbo C
  1013.                LOADWAT.BAT       <- Link Batch file - Watcom C
  1014.                LOADWEC.BAT       <- Link Batch file - EXPRESS C
  1015.                LOADZTC.BAT       <- Link Batch file - Zortech C
  1016.                BOSSDEMO.C        <- Source to BOSSDEMO
  1017.                BOSSDEMO.EXE      <- DEMO Program
  1018.                BOSSDEMO.MAK      <- MAKE file for QuickC
  1019.                BOSSDEMO.PRJ      <- PROJECT file for Turbo C
  1020.                GENINDEX.C        <- Source to GENINDEX
  1021.                HELLO.C           <- The Classic...
  1022.                HELP.C            <- Help system source
  1023.                INTELC.HLP        <- Demo DATA file
  1024.                INTELC.NDX        <- Index for Demo DATA file
  1025.                POPUP.C           <- Popup menu source
  1026.                REV.HST           <- Revision History
  1027.                REV.LEV           <- Revision Level
  1028.                SAMPLE.C          <- Data entry sample program
  1029.  
  1030.  
  1031.                                                            Page: 16
  1032.                                                      The Window BOSS
  1033.  
  1034.  
  1035.  
  1036.         The Shareware Distribution Diskette - continued.
  1037.  
  1038.  
  1039.              Contents of BOSS_SUP - continued.
  1040.  
  1041.                WINDOWS.FN5       <- Type Checking INCLUDE file
  1042.                WINDOWS.FNZ       <- Type Checking INCLUDE file
  1043.                WINDOWS.H         <- BOSS INCLUDE file
  1044.                WN_FRMGE.C        <- Data Entry form reader
  1045.                WN_GDATE.C        <- Data Entry function (dates)
  1046.                WN_GFLOA.C        <- Data Entry function (floats)
  1047.                WN_GPHON.C        <- Data Entry function (phone)
  1048.                WN_GTIME.C        <- Data Entry function (time)
  1049.                WN_IEMSG.C        <- Data Entry error message handler
  1050.                WN_IHMSG.C        <- Data Entry help message hander
  1051.                WN_PUTS.C         <- Source to wn_puts()
  1052.  
  1053.              Contents of BOSS_LB1
  1054.  
  1055.                SMSC5.LIB         <- BOSS library - Microsoft C
  1056.                SMSQC.LIB         <- BOSS library - Quick C (QCL)
  1057.  
  1058.              Contents of BOSS_LB2
  1059.  
  1060.                WATEC.LIB         <- BOSS library - EXPRESS C
  1061.                WATOC.LIB         <- BOSS library - Watcom C
  1062.                ZTECH.LIB         <- BOSS library - Zortech C
  1063.  
  1064.              Contents of BOSS_LB3
  1065.  
  1066.                MWIN.MIX          <- BOSS library - Mix Power C
  1067.                SAZTEC.LIB        <- BOSS library - Aztec C
  1068.                SC86.LIB          <- BOSS library - CI86
  1069.  
  1070.              Contents of BOSS_LB4
  1071.  
  1072.                SDLC.LIB          <- BOSS library - Datalight
  1073.                SLAT3.LIB         <- BOSS library - Lattice C 3.4
  1074.                SLAT6.LIB         <- BOSS library - Lattice C 6.0
  1075.                STC.LIB           <- BOSS library - Turbo C
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.                                                            Page: 17
  1093.                                                      The Window BOSS
  1094.  
  1095.  
  1096.  
  1097.         5.3. The SOURCE Distribution Diskette(s)
  1098.  
  1099.          The SOURCE diskette(s) contain the following files:
  1100.  
  1101.           DEMO / DOC Disk
  1102.  
  1103.              LHARC.DOC           <- Documentation for ARC.EXE
  1104.              LHARC.EXE           <- Archive utility
  1105.              DOC.LZH             <- Manual 
  1106.              DEMO.LZH            <- DEMO program & data files 
  1107.              READ.ME             <- Important notes
  1108.              REVHST.LZH          <- Revision History 
  1109.              REV.LEV             <- Revision Level 
  1110.              DISKS.LST           <- List of files on source disks
  1111.                   
  1112.           Disk 1
  1113.  
  1114.              CFILES.LZH          <- Source to all "C" modules
  1115.              WATCOM.LZH          <- Watcom Specific files
  1116.              DLC.LZH             <- Datalight Specific files
  1117.  
  1118.           Disk 2
  1119.  
  1120.              MS5.LZH             <- Microsoft C Specific files
  1121.              MSQC.LZH            <- Microsoft Quick C Specific files
  1122.              TC2.LZH             <- Turbo C Specific files
  1123.              MIX.LZH             <- Mix Power C Specific files
  1124.              ZTC.LZH             <- Zortech C Specific files
  1125.  
  1126.           Disk 3
  1127.  
  1128.              ASMFILES.LZH        <- Source to all "Assembler" modules
  1129.              LC3.LZH             <- Lattice 3.4 Specific files
  1130.              LC6.LZH             <- Lattice 6.0 Specific files
  1131.              C86.LZH             <- CI86 Specific files
  1132.              AZTEC.LZH           <- Aztec Specific files
  1133.  
  1134.  
  1135.  
  1136.  
  1137.  
  1138.  
  1139.  
  1140.  
  1141.  
  1142.  
  1143.  
  1144.  
  1145.  
  1146.  
  1147.  
  1148.  
  1149.  
  1150.  
  1151.  
  1152.  
  1153.                                                            Page: 18
  1154.                                                      The Window BOSS
  1155.  
  1156.  
  1157.  
  1158.         The SOURCE Distribution Diskette(s) - continued
  1159.  
  1160.  
  1161.  
  1162.              Contents of ASMFILES.LZH (ASM Source Files)
  1163.  
  1164.                AZVLIB.ASM        <- ASM routines for Aztec
  1165.                DLVLIB.ASM        <- ASM routines for Datalight
  1166.                MSVLIB.ASM        <- ASM routines for MSC, Borland, Watcom
  1167.                VLIB.ASM          <- ASM routines for Lattice & CI86
  1168.                PCVLIB.ASM        <- ASM routines for Mix Power C
  1169.                                     Microsoft MASM format
  1170.                WCVLIB.ASM        <- ASM routines for WATCOM C
  1171.                !VLIBC.ASM        <- ASM routines not found in VLIB.C
  1172.  
  1173.              Contents of AZTEC.LZH
  1174.  
  1175.                ACOMPACT.BAT      <- Compact model assembler driver
  1176.                ALARGE.BAT        <- Large model assembler driver
  1177.                AMEDIUM.BAT       <- Medium model assembler driver
  1178.                ASMALL.BAT        <- Small model assembler driver
  1179.                CCC.BAT           <- Compact model compiler driver
  1180.                CCL.BAT           <- Large model compiler driver
  1181.                CCM.BAT           <- Medium model compiler driver
  1182.                CCS.BAT           <- Small model compiler driver
  1183.                CCOMPILE.BAT      <- Compact model - compile *.c
  1184.                LCOMPILE.BAT      <- Large model   - compile *.c
  1185.                MCOMPILE.BAT      <- Medium model  - compile *.c
  1186.                SCOMPILE.BAT      <- Small model   - compile *.c
  1187.                LOADAZ.BAT        <- Link driver for BOSSDEMO
  1188.                MAKELIB.BAT       <- Build LIB from O(s)
  1189.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1190.                SWIN.LIB          <- Small model library
  1191.                LWIN.LIB          <- Large model library
  1192.                WINDOWS.FNS       <- Type checking header file
  1193.  
  1194.              Contents of C86.LZH (Computer Innovations Specific Files)
  1195.  
  1196.                ASMALL.BAT        <- Small model assembler driver
  1197.                ALARGE.BAT        <- Large model assembler driver
  1198.                CC.BAT            <- Small model compiler driver 
  1199.                CCBIG.BAT         <- Large model compiler driver 
  1200.                EPILOGUE.H        <- ASM include file
  1201.                LCOMPILE.BAT      <- Large model - compile *.c
  1202.                LOADC86.BAT       <- Link driver for BOSSDEMO
  1203.                LWIN.LIB          <- Large model library
  1204.                MAKELIB.BAT       <- Builds LIB file from OBJ(s)
  1205.                MODEL.H           <- ASM include file
  1206.                PROLOGUE.H        <- ASM include file
  1207.                SCOMPILE.BAT      <- Small model - compile *.c
  1208.                SWIN.LIB          <- Small model library
  1209.  
  1210.  
  1211.  
  1212.  
  1213.  
  1214.                                                            Page: 19
  1215.                                                      The Window BOSS
  1216.  
  1217.  
  1218.  
  1219.         The SOURCE Distribution Diskette - continued.
  1220.              
  1221.  
  1222.  
  1223.              Contents of CFILES.LZH (C Source Files)
  1224.  
  1225.                BOSSDEMO.C        <- BOSSDEMO Source
  1226.                DOSINT.C          <- AZTEC compatibility module.
  1227.                GENINDEX.C        <- GENINDEX Source
  1228.                HELP.C            <- Help function source
  1229.                HELLO.C           <- The classic...
  1230.                POPUP.C           <- Popup menu source
  1231.                SCANCODE.C        <- Quickie to display KB scancodes
  1232.                SAMPLE.C          <- Data entry sample program
  1233.                VLIB.C            <- C level versions of most ASM funs.
  1234.                WINDOWS.C         <- Globals 
  1235.                WINDOWS.H         <- Window BOSS header file
  1236.                WN_ACTIV.C        <- Window activation, memory mgmt ++
  1237.                WN_BOXSE.C        <- Set box drawing character set
  1238.                WN_CLOSE.C        <- Window Close
  1239.                WN_CLR.C          <- Clear window
  1240.                WN_COLOR.C        <- Set window colors
  1241.                WN_DBORD.C        <- Draw window borders
  1242.                WN_DELRO.C        <- Delete row in window
  1243.                WN_DMA.C          <- Set video access mode
  1244.                WN_SCROL.C        <- Set window scrolling method
  1245.                WN_INIT.C         <- Initialize window system
  1246.                WN_DMODE.C        <- Set window display mode
  1247.                WN_FIXCS.C        <- Fix physical cursor location
  1248.                WN_GETS.C         <- Get string with validation   
  1249.                WN_INSRO.C        <- Insert row in window
  1250.                WN_LOCAT.C        <- Locate cursor in window
  1251.                WN_MOVE.C         <- Move window
  1252.                WN_MOUSE.C        <- Mouse interface routines
  1253.                WN_NATRI.C        <- Set new attributes NOW
  1254.                WN_OPEN.C         <- Window open
  1255.                WN_PRINT.C        <- Window printf
  1256.                WN_PUTS.C         <- Put string in window
  1257.                WN_RESTO.C        <- Restore window image
  1258.                WN_SAVE.C         <- Save window image
  1259.                WN_STRING.C       <- String (char) functions
  1260.                WN_SUP.C          <- Internal support functions
  1261.                WN_SYNC.C         <- Set/Clear cursor sync
  1262.                WN_TITLE.C        <- Title window
  1263.                WN_WRAP.C         <- Set/Clear text wrap
  1264.                WPRINTF.C         <- Alternate window printf
  1265.                WINDOWS.FN5       <- Prototype header
  1266.                WINDOWS.FNZ       <- Prototype header
  1267.  
  1268.  
  1269.  
  1270.  
  1271.  
  1272.  
  1273.  
  1274.  
  1275.                                                            Page: 20
  1276.                                                      The Window BOSS
  1277.  
  1278.  
  1279.  
  1280.         The SOURCE Distribution Diskette - continued.
  1281.              
  1282.  
  1283.  
  1284.              Contents of CFILES.LZH (C Source Files - continued.)
  1285.  
  1286.  
  1287.                WN_GDATE.C        <- Data entry - get date
  1288.                WN_GDOUBLE.C      <- Data entry - get double
  1289.                WN_GTIME.C        <- Data entry - get time
  1290.                WN_GTEXT.C        <- Data entry - get text
  1291.                WN_GPHONE.C       <- Data entry - get phone #
  1292.                WN_GPWORD.C       <- Data entry - get password
  1293.                WN_GINT.C         <- Data entry - get integer
  1294.                WN_GUINT.C        <- Data entry - get unsigned integer
  1295.                WN_GULONG.C       <- Data entry - get unsigned long
  1296.                WN_GLONG.C        <- Data entry - get long
  1297.                WN_GFLOAT.C       <- Data entry - get float 
  1298.                WN_GBOOL.C        <- Data entry - get logical  
  1299.                WN_DTEXT.C        <- Data entry - display text
  1300.                WN_FRMOPN.C       <- Data entry - FORM open
  1301.                WN_FRMGET.C       <- Data entry - FORM read
  1302.                WN_FRMCLS.C       <- Data entry - FORM close
  1303.                WN_INPUT.C        <- Data entry - common input 
  1304.                WN_IEMSG.C        <- Data entry - error msg handler
  1305.                WN_IHMSG.C        <- Data entry - help msg handler
  1306.            
  1307.  
  1308.  
  1309.  
  1310.  
  1311.  
  1312.  
  1313.  
  1314.  
  1315.  
  1316.  
  1317.  
  1318.  
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.  
  1325.  
  1326.  
  1327.  
  1328.  
  1329.  
  1330.  
  1331.  
  1332.  
  1333.  
  1334.  
  1335.  
  1336.                                                            Page: 21
  1337.                                                      The Window BOSS
  1338.  
  1339.  
  1340.  
  1341.         The SOURCE Distribution Diskette - continued.
  1342.              
  1343.  
  1344.  
  1345.              Contents of MIX.LZH (Mix Power C Specific Files)
  1346.  
  1347.           ** Note: Mix Power C only supports the Medium Memory Model **
  1348.  
  1349.                AMEDIUM.BAT       <- Medium model assembler driver
  1350.                MCOMPILE.BAT      <- Medium model - compile *.c
  1351.                LOADPC.BAT        <- Link driver for BOSSDEMO
  1352.                MWIN.MIX          <- Medium model library
  1353.                MAKELIB.BAT       <- Builds MWIN.MIX 
  1354.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1355.                PCCM.BAT          <- Medium model compiler driver
  1356.                WINDOWS.FNS       <- Type checking header
  1357.  
  1358.              Contents of LC3.LZH & LC6.LZH (Lattice C Specific Files)
  1359.  
  1360.                ASMALL.BAT        <- Small model assembler driver
  1361.                ALARGE.BAT        <- Large model assembler driver
  1362.                ADMODEL.BAT       <- D model assembler driver
  1363.                APMODEL.BAT       <- P model assembler driver
  1364.                LCOMPILE.BAT      <- Large model - compile *.c
  1365.                SCOMPILE.BAT      <- Small model - compile *.c
  1366.                PCOMPILE.BAT      <- P model - compile *.c
  1367.                DCOMPILE.BAT      <- D model - compile *.c
  1368.                LCS.BAT           <- Small model compiler driver
  1369.                LCL.BAT           <- Large model compiler driver
  1370.                LCP.BAT           <- P model compiler driver
  1371.                LCD.BAT           <- D model compiler driver
  1372.                LOADLC.BAT        <- Link driver for BOSSDEMO
  1373.                LWIN.LIB          <- Large model library
  1374.                SWIN.LIB          <- Small model library
  1375.                MAKELIB.BAT       <- Build LIB file from OBJ(s)
  1376.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1377.                WINDOWS.FNS       <- Type checking header
  1378.  
  1379.  
  1380.  
  1381.  
  1382.  
  1383.  
  1384.  
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.  
  1391.  
  1392.  
  1393.  
  1394.  
  1395.  
  1396.  
  1397.                                                            Page: 22
  1398.                                                      The Window BOSS
  1399.  
  1400.  
  1401.  
  1402.         The SOURCE Distribution Diskette - continued.
  1403.              
  1404.  
  1405.  
  1406.              Contents of DLC.LZH (Datalight Specific)
  1407.  
  1408.                ASMALL.BAT        <- Small model assembler driver
  1409.                ALARGE.BAT        <- Large model assembler driver
  1410.                ADMODEL.BAT       <- D model assembler driver
  1411.                APMODEL.BAT       <- P model assembler driver     
  1412.                CCS.BAT           <- Small model compiler driver
  1413.                CCL.BAT           <- Large model compiler driver
  1414.                CCD.BAT           <- D model compiler driver
  1415.                CCP.BAT           <- P model compiler driver
  1416.                LCOMPILE.BAT      <- Large model - compile *.c
  1417.                SCOMPILE.BAT      <- Small model - compile *.c
  1418.                DCOMPILE.BAT      <- D model - compile *.c
  1419.                PCOMPILE.BAT      <- P model - compile *.c
  1420.                LOADDLC.BAT       <- Link driver for BOSSDEMO
  1421.                LWIN.LIB          <- Large model library
  1422.                SWIN.LIB          <- Small model library
  1423.                MAKELIB.BAT       <- Build LIB from OBJ(s)
  1424.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1425.                WINDOWS.FNS       <- Type checking header
  1426.  
  1427.              Contents of TC2.LZH (Borland Turbo C Specific)
  1428.  
  1429.                ALARGE.BAT        <- Large model assembler driver
  1430.                ASMALL.BAT        <- Small model assembler driver
  1431.                BOSSDEMO.PRJ      <- TC Project file for BOSSDEMO
  1432.                LCOMPILE.BAT      <- TCC - Large model - compile *.c 
  1433.                SCOMPILE.BAT      <- TCC - Small model - compile *.c
  1434.                CCOMPILE.BAT      <- TCC - Compact model - compile *.c
  1435.                MCOMPILE.BAT      <- TCC - Medium model - compile *.c
  1436.                LOADTC.BAT        <- Tlink driver for BOSSDEMO
  1437.                LWIN.LIB          <- Large model library
  1438.                MAKELIB.BAT       <- Build LIB from OBJ(s)
  1439.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1440.                SWIN.LIB          <- Small model library
  1441.                TCCL.BAT          <- Large model TCC compiler driver
  1442.                TCCS.BAT          <- Small model TCC compiler driver
  1443.                TCCM.BAT          <- Medium model TCC compiler driver
  1444.                TCCC.BAT          <- Compact model TCC compiler driver
  1445.                WINDOWS.FNS       <- Type checking header
  1446.                   
  1447.  
  1448.  
  1449.  
  1450.  
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.  
  1457.  
  1458.                                                            Page: 23
  1459.                                                      The Window BOSS
  1460.  
  1461.  
  1462.  
  1463.         The SOURCE Distribution Diskette - continued.
  1464.              
  1465.  
  1466.  
  1467.              Contents of MS5.LZH (Microsoft C Specific Files)
  1468.  
  1469.                ASMALL.BAT        <- Small model assembler driver
  1470.                ALARGE.BAT        <- Large model assembler driver
  1471.                AMEDUIM.BAT       <- Medium model assembler driver
  1472.                ACOMPACT.BAT      <- Compact model assembler driver
  1473.                LCOMPILE.BAT      <- Large model - compile *.c
  1474.                SCOMPILE.BAT      <- Small model - compile *.c
  1475.                MCOMPILE.BAT      <- Medium model - compile *.c
  1476.                CCOMPILE.BAT      <- Compact model - compile *.c
  1477.                MCCL.BAT          <- Large model compiler driver
  1478.                MCCS.BAT          <- Small model compiler driver
  1479.                MCCM.BAT          <- Medium model compiler driver
  1480.                MCCC.BAT          <- Compact model compiler driver
  1481.                LOADMS.BAT        <- Link driver for BOSSDEMO
  1482.                LWIN.LIB          <- Large model library
  1483.                SWIN.LIB          <- Small model library
  1484.                MAKELIB.BAT       <- Build LIB from OBJ(s)
  1485.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1486.                WINDOWS.FNS       <- Type checking header
  1487.  
  1488.              Contents of MSQC.LZH (Microsoft QuickC Specific Files)
  1489.  
  1490.                ASMALL.BAT        <- Small model assembler driver
  1491.                ALARGE.BAT        <- Large model assembler driver
  1492.                AMEDUIM.BAT       <- Medium model assembler driver
  1493.                ACOMPACT.BAT      <- Compact model assembler driver
  1494.                SCOMPILE.BAT      <- Small model - compile *.c
  1495.                LCOMPILE.BAT      <- Large model - compile *.c
  1496.                MCOMPILE.BAT      <- Medium model - compile *.c
  1497.                CCOMPILE.BAT      <- Compact model - compile *.c
  1498.                MCCL.BAT          <- Large model compiler driver
  1499.                MCCS.BAT          <- Small model compiler driver
  1500.                MCCM.BAT          <- Medium model compiler driver
  1501.                MCCC.BAT          <- Compact model compiler driver
  1502.                LOADMS.BAT        <- Link driver for BOSSDEMO
  1503.                LWIN.LIB          <- Large model library
  1504.                SWIN.LIB          <- Small model library
  1505.                MAKELIB.BAT       <- Build LIB from OBJ(s)
  1506.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1507.                BOSSDEMO.MAK      <- MAKE file for BOSSDEMO
  1508.                WINDOWS.FNS       <- Type checking header
  1509.  
  1510.  
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.  
  1517.  
  1518.  
  1519.                                                            Page: 24
  1520.                                                      The Window BOSS
  1521.  
  1522.  
  1523.  
  1524.         The SOURCE Distribution Diskette - continued.
  1525.              
  1526.  
  1527.  
  1528.  
  1529.              Contents of WATCOM.LZH
  1530.  
  1531.                ACOMPACT.BAT      <- Compact model assembler driver
  1532.                ALARGE.BAT        <- Large model assembler driver
  1533.                ASMALL.BAT        <- Small model assembler driver
  1534.                AMEDIUM.BAT       <- Medium model assembler driver
  1535.                WCCS.BAT          <- Small model compiler driver
  1536.                WCCL.BAT          <- Large model compiler driver
  1537.                WCCM.BAT          <- Medium model compiler driver
  1538.                WCCC.BAT          <- Compact model compiler driver
  1539.                XCC.BAT           <- EXPRESS C compiler driver
  1540.                CCOMPILE.BAT      <- Compact model - compile *.c
  1541.                LCOMPILE.BAT      <- Large model   - compile *.c
  1542.                MCOMPILE.BAT      <- Medium model  - compile *.c
  1543.                SCOMPILE.BAT      <- Small model   - compile *.c
  1544.                LOADWAT.BAT       <- Link driver for BOSSDEMO
  1545.                LOADWEC.BAT       <- Link driver for BOSSDEMO (EXPRESS C)
  1546.                MAKELIB.BAT       <- Build LIB from OBJ(s)
  1547.                MAKELIB.CMD       <- Data file for MAKELIB.BAT
  1548.                SWIN.LIB          <- Small model library
  1549.                LWIN.LIB          <- Large model library
  1550.                XMWIN.LIB         <- EXPRESS C library
  1551.                WINDOWS.FNS       <- Type checking header
  1552.  
  1553.              Contents of ZTC.LZH (Zortech C Specific Files)
  1554.  
  1555.                ACOMPACT.BAT      <- Compact model assembler driver
  1556.                ALARGE.BAT        <- Large model assembler driver
  1557.                ASMALL.BAT        <- Small model assembler driver
  1558.                AMEDIUM.BAT       <- Medium model assembler driver
  1559.                CCOMPILE.BAT      <- Compact model - compile *.c
  1560.                LCOMPILE.BAT      <- Large model   - compile *.c
  1561.                LOADZTC.BAT       <- Link driver for BOSSDEMO
  1562.                LWIN.LIB          <- Larger model library
  1563.                MAKELIB.BAT       <- Build LIB file from OBJ(s)
  1564.                MAKELIB.CMD       <- Data file for makelib.bat
  1565.                MCOMPILE.BAT      <- Medium model  - compile *.c
  1566.                SCOMPILE.BAT      <- Small model   - compile *.c
  1567.                SWIN.LIB          <- Small model library
  1568.                WINDOWS.FNS       <- Type checking header file
  1569.                ZTCC.BAT          <- Compact model compiler driver
  1570.                ZTCCB.BAT         <- Compact model big compiler driver
  1571.                ZTCL.BAT          <- Large model compiler driver
  1572.                ZTCLB.BAT         <- Large model big compiler driver
  1573.                ZTCM.BAT          <- Medium model compiler driver
  1574.                ZTCMB.BAT         <- Medium model big comiler driver
  1575.                ZTCS.BAT          <- Small model compiler driver
  1576.                ZTCSB.BAT         <- Small model big compiler driver
  1577.  
  1578.  
  1579.  
  1580.                                                            Page: 25
  1581.                                                      The Window BOSS
  1582.  
  1583.  
  1584.  
  1585.         6. Installation, Compiling, Linking 
  1586.  
  1587.         6.1. Installation
  1588.  
  1589.              By the numbers:
  1590.  
  1591.                 1) MAKE A BACKUP OF ALL DISKS !!!
  1592.  
  1593.                 2) Shareware diskettes - Use LHARC to unarchive the 
  1594.                    various LZH files.  You will need 900+k of free disk 
  1595.                    space for all of the files!  Alternatively you can 
  1596.                    extract only those files you need for use with a 
  1597.                    specific compiler. Simply use LHARC to extract all the 
  1598.                    files from BOSS_SUP.LZH then the library(s) you will 
  1599.                    from BOSS_LB?.LZH, for example:
  1600.  
  1601.                           B>A:LHARC E A:BOSS_SUP
  1602.                           B>A:LHARC E A:BOSS_LB1 SMSC5.LIB
  1603.  
  1604.                    ** Shareware Users Note ** - The examples used in the 
  1605.                    documentation assume the library's name to be 
  1606.                    SWIN.LIB. You may want to rename the library you 
  1607.                    extracted to conform to this naming convention to 
  1608.                    eliminate any possible confusion.  
  1609.  
  1610.                    Source Code diskettes - Use LHARC to unarchive 
  1611.                    CFILES.LZH and ASMFILES.LZH. Then, depending upon the 
  1612.                    compiler you intend to use, unarchive only ONE of the 
  1613.                    following: LC3.LZH, LC6.LZH, MS5.LZH, MSQC.LZH, 
  1614.                    DLC.LZH, C86.LZH, TC2.LZH, MIX.LZH, WATCOM.LZH, 
  1615.                    ZTC.LZH, or AZTEC.LZH. If you plan on unarchiving all 
  1616.                    of the compiler specific LZH files you will need 
  1617.                    aproximately 2 megabytes of free disk space!
  1618.  
  1619.                 3) Copy the LIBrary that corresponds to the compiler you 
  1620.                    are using onto the disk(s) you usually use with your 
  1621.                    "C" compiler. The LIB file should be on the same 
  1622.                    disk(s) that the "C" runtime libraries are on.  Be 
  1623.                    sure that the small model library is named "SWIN.LIB". 
  1624.                    The large model library should be named "LWIN.LIB". 
  1625.                    The Mix Power C library is MWIN.MIX.  The EXPRESS C 
  1626.                    library is XMWIN.LIB.  
  1627.  
  1628.                 4) Copy (or rename) the compiler driver batch file that 
  1629.                    corresponds to the compiler you are using to:
  1630.  
  1631.                                      CSM.BAT
  1632.  
  1633.  
  1634.  
  1635.  
  1636.  
  1637.  
  1638.  
  1639.  
  1640.  
  1641.                                                            Page: 26
  1642.                                                      The Window BOSS
  1643.  
  1644.  
  1645.  
  1646.         Installation - continued.
  1647.  
  1648.  
  1649.  
  1650.                 5) If WINDOWS.FNS is not contained in the archive for 
  1651.                    your compiler, or is not present after you unarchive 
  1652.                    the required files, copy (or rename) WINDOWS.FN5 or 
  1653.                    WINDOWS.FNZ to WINDOWS.FNS. The following table can be 
  1654.                    used:
  1655.  
  1656.                        Compiler            File
  1657.                        ---------           -----
  1658.                        LC3 & LC6           WINDOWS.FN5
  1659.                        Power C             WINDOWS.FN5
  1660.                        WATCOM, EXPRESS C   WINDOWS.FN5
  1661.                        MSC5, Quick C       WINDOWS.FN5
  1662.                        Turbo C             WINDOWS.FN5
  1663.  
  1664.                        CI86                -- None --
  1665.  
  1666.                        AZTEC               WINDOWS.FNZ
  1667.                        DLC                 WINDOWS.FNZ
  1668.                        ZORTECH             WINDOWS.FNZ
  1669.                        
  1670.  
  1671.                 6) Remember there is no magic to using The Window BOSS. 
  1672.                    It's simple!!
  1673.  
  1674.  
  1675.  
  1676.  
  1677.  
  1678.  
  1679.  
  1680.  
  1681.  
  1682.  
  1683.  
  1684.  
  1685.  
  1686.  
  1687.  
  1688.  
  1689.  
  1690.  
  1691.  
  1692.  
  1693.  
  1694.  
  1695.  
  1696.  
  1697.  
  1698.  
  1699.  
  1700.  
  1701.  
  1702.                                                            Page: 27
  1703.                                                      The Window BOSS
  1704.  
  1705.  
  1706.  
  1707.         Installation/Compiling/Linking - continued.
  1708.  
  1709.  
  1710.  
  1711.         6.2. Compiling
  1712.  
  1713.              Compile your source code in the following manner:
  1714.  
  1715.                                   C>csm hello
  1716.  
  1717.              ** ALL compilers should be invoked with the compiler driver 
  1718.              batch file supplied with The Window BOSS.  Some compilers 
  1719.              require ".c" to be added to the name of the source file e.g. 
  1720.              "csm hello.c" 
  1721.  
  1722.         6.3. Linking
  1723.  
  1724.              Simply specify the ?WIN.LIB file that corresponds to the 
  1725.              compiler/memory model you are using.  Don't forget to 
  1726.              include your compilers runtime library as well. The 
  1727.              following examples demonstrate basic linking using the small 
  1728.              model library (medium for MIX Power C):
  1729.  
  1730.                   Lattice 
  1731.                   link c+hello,hello,,swin+lcm+lc+lapi+lcr   <- 3.41
  1732.                   lmb hello,hello,,swin+lcr;                 <- 6.XX
  1733.  
  1734.                   Computer Innovations
  1735.                   link hello,hello,,swin+c86s2s
  1736.  
  1737.                   Datalight
  1738.                   link c+hello,hello,hello,swin+nl
  1739.  
  1740.                   Microsoft (C & Quick C)
  1741.                   link hello,hello,,swin
  1742.  
  1743.                   Borland
  1744.                   tlink /c c0s hello,hello,hello,swin emu maths cs
  1745.  
  1746.                   Mix Power C
  1747.                   pcl hello;mwin [5k,40k,0]
  1748.  
  1749.                   Aztec
  1750.                   ln hello swin.lib m.lib c.lib
  1751.  
  1752.                   Watcom
  1753.                   wlink file hello library swin,maths,clibs
  1754.  
  1755.                   EXPRESS C
  1756.                   wlink file hello library xmwin,wcexpl
  1757.  
  1758.                   ZORTECH
  1759.                   blink hello,hello,,swin
  1760.  
  1761.  
  1762.  
  1763.                                                            Page: 28
  1764.                                                      The Window BOSS
  1765.  
  1766.  
  1767.  
  1768.         7. General Notes
  1769.  
  1770.         Genindex, Help, and Popup are support programs and functions for 
  1771.         the BOSSDEMO program.  They can, however, serve as valuable aids 
  1772.         to you in the creation of help screens, pulldown menus, and popup 
  1773.         menus. The code is provided to demonstrate how the functions in 
  1774.         The Window BOSS can be used to create online help screens and 
  1775.         popup windows.  Please feel free to modify it to suit your needs.
  1776.  
  1777.         Both the C and assembly functions make very heavy use of 
  1778.         pointers.  The code contains numerous checks to ensure that 
  1779.         memory outside of that in use by the program is not corrupted.  
  1780.         If you attempt to do something that would cause memory to be 
  1781.         corrupted an error message will appear and your program will 
  1782.         exit.  This message will usually say that a bad handle was passed 
  1783.         to some function.  This error is normally caused by a stray 
  1784.         pointer in the application code!  Check all your pointer 
  1785.         operations.  Doing strcpy's to arrays with insufficient space 
  1786.         will always cause this type of problem.
  1787.  
  1788.         Generally speaking, the members of the window control block 
  1789.         (refer to windows.h) should not be modified unless you are 
  1790.         familiar with how they are used by the various functions.  
  1791.  
  1792.         Although the routines appear to support the multi page 
  1793.         capabilities of the IBM Color Card, actual support of this 
  1794.         feature has not been implemented.  Invoking the functions with 
  1795.         references to video pages other than 0 might produce interesting, 
  1796.         but undesired results.  
  1797.  
  1798.         If you are upgrading from a previous version of The Window BOSS 
  1799.         be sure to re-compile and re-link your application.  This will 
  1800.         eliminate the possibility of any "unusual" problems.
  1801.  
  1802.         The distribution libraries were created on an IBMPC/AT under DOS 
  1803.         3.3 using Lattice 3.41, Lattice 6.02, Microsoft 5.1, Microsoft 
  1804.         QuickC 2.0, Borland Turbo C 2.0, Datalight 3.10, Aztec 4.10c, 
  1805.         Watcom C 7.0, Mix Power C 1.3.0, Zortech 2.0, and Computer 
  1806.         Innovations CI86 2.30A.  Marion was used to create the LIB files 
  1807.         for CI86.  Microsoft's LIB was used for the Microsoft variants, 
  1808.         Datalight and Zortech. Lattice, Aztec, Watcom  and the Mix Power 
  1809.         C libraries were created with the library managers shipped with 
  1810.         the respective compilers.  Test hardware: IBMPC/XT/AT, PS/2, with 
  1811.         IBM Monochrome, CGA, EGA, and VGA video adapters.  Additionally, 
  1812.         a wide variety of clones (8088, 8086, 80186, 80286, 80386) with 
  1813.         brand name and noname components were also tested.
  1814.  
  1815.  
  1816.  
  1817.  
  1818.  
  1819.  
  1820.  
  1821.  
  1822.  
  1823.  
  1824.                                                            Page: 29
  1825.                                                      The Window BOSS
  1826.  
  1827.  
  1828.  
  1829.         General Notes - continued.
  1830.  
  1831.  
  1832.  
  1833.         Several global symbols are used by the various functions:
  1834.  
  1835.                                  int wn_dmaflg;
  1836.                                  int wn_sbit;
  1837.  
  1838.              wn_dmaflg when TRUE enables direct writes into video ram. 
  1839.              This is the default setting and should work in all cases.  
  1840.              Setting wn_dmaflg to FALSE will disable these direct writes. 
  1841.              When wn_dmaflg is FALSE the BIOS video routines are used. 
  1842.              This results in slower screen updates.  However, this method 
  1843.              does have the advantage of being considered "well behaved" 
  1844.              by IBM's Topview, Microsoft's Windows, and DESQ.  
  1845.              
  1846.              wn_sbit controls the window refresh rate on systems with 
  1847.              color cards.  When set to SLOW (defined in windows.h) window 
  1848.              displays will appear to be painted on the screen rather than 
  1849.              flash displayed. This is the default value.  Setting wn_sbit 
  1850.              to FAST enables flash displays. Artistic use of wn_sbit can 
  1851.              give your application that extra visual touch. Experiment!
  1852.  
  1853.              The best way to manipulate the method by which windows are 
  1854.              updated is via the wn_dmode() function.  Calling 
  1855.              wn_dmode(PAINT) causes the image to be painted while 
  1856.              wn_dmode(FLASH) causes the image to be flash updated.  Flash 
  1857.              updating is the preferred method.  Please keep in mind that 
  1858.              windows are always flash updated on monochrome systems. 
  1859.  
  1860.         From a performance standpoint, the fastest (flicker & snow free) 
  1861.         screen updates will occur with wn_dmaflg=TRUE and wn_sbit=FAST.  
  1862.         The key words here are flicker and snow free.  Scrolling speed 
  1863.         can be increased with, a proportional increase in flicker 
  1864.         (perhaps), by using wn_scroll() function to set the scrolling 
  1865.         method for the window to BIOS.  This technique will provide the 
  1866.         fastest screen updates and scrolling on color systems.
  1867.  
  1868.         Several of the compilers support a compile time command line 
  1869.         parameter that results in structures being byte aligned instead 
  1870.         of word aligned.  In all cases, the default (i.e. no command line 
  1871.         parameter) option was used to compile the modules in the various 
  1872.         libraries.
  1873.  
  1874.         Programs such as Wordstar and Lotus change the video mode when 
  1875.         they run.  If your system is equipped with a color monitor and 
  1876.         your windows are appearing in black and white, issue a call to 
  1877.         v_smode to set the video mode to 3.  Alternatively, you can use 
  1878.         the "MODE CO80" command at DOS level before you run your 
  1879.         application.  
  1880.  
  1881.  
  1882.  
  1883.  
  1884.  
  1885.                                                            Page: 30
  1886.                                                      The Window BOSS
  1887.  
  1888.  
  1889.  
  1890.         General Notes - continued.
  1891.  
  1892.  
  1893.  
  1894.         7.1. Borland Turbo C
  1895.  
  1896.         Borland Turbo C pre version 1.5 users who prefer "The Integrated 
  1897.         Environment" over the "Command-Line Version" MUST define the 
  1898.         symbol "BORLAND=1". (Select Options, Compiler, Defines and enter 
  1899.         "BORLAND=1" in the dialogue box without quotes and in upper 
  1900.         case.)
  1901.  
  1902.         Integrated Environment users MUST create PROJECT files in order 
  1903.         to be able to create EXEcutable programs from within the Integrated 
  1904.         Environment.  The PROJECT file must contain the names of all of 
  1905.         the programs that comprise the application along with specific 
  1906.         entries for all 3rd party libraries being used.  In the case of 
  1907.         3rd party libraries, the complete path specification for the 
  1908.         library must be provided (e.g. c:\turboc\lib\swin.lib).
  1909.  
  1910.         7.2. Microsoft C
  1911.  
  1912.         Microsoft Version 5.XX libraries were generated using the "/Zl" 
  1913.         command line parameter. This should insure compatability with 
  1914.         previous versions of the compiler.  
  1915.  
  1916.         Some large model programs may require a stack greater than 4096 
  1917.         bytes.
  1918.  
  1919.         7.3. Microsoft QuickC
  1920.  
  1921.         Microsoft QuickC - All Programming Environment users MUST 
  1922.         create MAKE files in order to be able to create EXEcutable 
  1923.         programs from within the Programming Environment.  The MAKE file 
  1924.         must contain the names of all of the programs that comprise the 
  1925.         application along with specific entries for all 3rd party 
  1926.         libraries being used.  In the case of 3rd party libraries, the 
  1927.         complete path specification for the library must be provided 
  1928.         (e.g. c:\msc\lib\swin.lib).  MAKE files are created by using 
  1929.         the SET PROGRAM LIST pick from the OPTIONS, MAKE, menu list.  
  1930.         Additionally, MSCV4=1 must be defined in "compiler flags" 
  1931.         "defines" dialog box (select OPTIONS, MAKE, COMPILER FLAGS, then 
  1932.         fill in DEFINES with MSCV4=1).
  1933.  
  1934.         Some large model programs may require a stack greater than 4096 
  1935.         bytes.
  1936.  
  1937.  
  1938.  
  1939.  
  1940.  
  1941.  
  1942.  
  1943.  
  1944.  
  1945.  
  1946.                                                            Page: 31
  1947.                                                      The Window BOSS
  1948.  
  1949.  
  1950.  
  1951.         General Notes - continued.
  1952.  
  1953.  
  1954.  
  1955.         7.4. MIX Power C
  1956.  
  1957.         Mix Power C - (1) Merge files must be created and edited with 
  1958.         text editors that do not insert ^Z for end of file. (2) PCO.EXE 
  1959.         should be in the default directory (the same directory that your 
  1960.         C files are in). (3) The linker should always be told the amount 
  1961.         of memory to be assigned to the stack, heap, and far heap.  Since 
  1962.         The Window BOSS uses both heap and far memory outside of your 
  1963.         program, it is imperative that PCL be invoked with reasonable 
  1964.         parameters. Typical values are [5k,40k,0] or [5k,40k,100k]. Refer 
  1965.         to the chapter on the Mix Linker in the Power C manual.
  1966.  
  1967.         7.5. Zortech C
  1968.  
  1969.         Zortech C - ZORLIB (as distributed with version 2.0 of Zortech C) 
  1970.         can not produce a correctly formatted library of The Window BOSS 
  1971.         functions.  Microsoft's library manager LIB was used to create 
  1972.         the libraries distributed with The Window BOSS.  Please do not 
  1973.         attempt to recreate or update any of The Window BOSS libraries 
  1974.         with ZORLIB.  Zortech has been notified of the problem.
  1975.  
  1976.  
  1977.  
  1978.  
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.  
  1985.  
  1986.  
  1987.  
  1988.  
  1989.  
  1990.  
  1991.  
  1992.  
  1993.  
  1994.  
  1995.  
  1996.  
  1997.  
  1998.  
  1999.  
  2000.  
  2001.  
  2002.  
  2003.  
  2004.  
  2005.  
  2006.  
  2007.                                                            Page: 32
  2008.                                                      The Window BOSS
  2009.  
  2010.  
  2011.  
  2012.         General Notes - continued.
  2013.  
  2014.  
  2015.  
  2016.         7.6. Lattice C
  2017.  
  2018.         Lattice C - Lattice large model programs sometimes require the 
  2019.         heap to be set to a minimum value.  This can be accomplished by 
  2020.         setting _MNEED or specifying the stack and heap size at run time. 
  2021.         A minimum heap size of 32k will usually satisfy most 
  2022.         applications. REMEMBER: This is for the LARGE model only.  Refer 
  2023.         to the Lattice reference manuals for further information on 
  2024.         setting the stack and heapsize.
  2025.  
  2026.         7.7. Aztec C
  2027.  
  2028.         Aztec C - Use the following command when recompiling BOSSDEMO.C:
  2029.  
  2030.                                csm -Z5000 bossdemo
  2031.  
  2032.         Some large model programs may require a stack greater than 4096 
  2033.         bytes.
  2034.  
  2035.         7.8. Watcom C
  2036.  
  2037.         Watcom C - Some large model programs may require a stack greater 
  2038.         than 4096 bytes.
  2039.  
  2040.         7.9. Express C
  2041.  
  2042.         Express C - Some programs may require a stack greater than 4096 
  2043.         bytes.
  2044.  
  2045.         7.10. Feedback
  2046.  
  2047.         PLEASE - Pass along your comments.  The Window BOSS is your tool.  
  2048.         If you find any logic errors let us know.  We are committed to 
  2049.         making The Window BOSS the best price performer available.  Call, 
  2050.         write, or if you prefer, you can reach us via CompuServe or 
  2051.         GENIE.  Our CompuServe electronic mail ID is [71565,1001], our 
  2052.         GENIE mail address is MONGELLUZZO. Remember, there is no reason 
  2053.         to sit, steam, or complain to those who can not provide any real 
  2054.         form of support.  Lastly, if you use The Window BOSS, register 
  2055.         your copy.  The Shareware System will only work if you support 
  2056.         it!
  2057.  
  2058.  
  2059.  
  2060.  
  2061.  
  2062.  
  2063.  
  2064.  
  2065.  
  2066.  
  2067.  
  2068.                                                            Page: 33
  2069.                                                      The Window BOSS
  2070.  
  2071.  
  2072.  
  2073.         7.11. Hints on Resolving Common Problems
  2074.  
  2075.         Unresolved Externals - Most common with the programming 
  2076.         environments of Turbo C and Quick C.  Both of these programming 
  2077.         environments require "program lists" or "make files".  This type 
  2078.         of error can also be caused by not explicitly specifying a Window 
  2079.         BOSS library on the link command line.  All linkers must have 
  2080.         explicit knowledge of what 3rd party libraries are to be linked 
  2081.         with the compiler libraries and your applications object files. 
  2082.         This problem is usually resolved by creating a program list or 
  2083.         make file that includes a explicit reference to one of The Window 
  2084.         BOSS libraries, or explicitly specifying the correct Window BOSS 
  2085.         library as part of the link command line.  Refer to your compiler 
  2086.         documentation for further information.
  2087.  
  2088.         Bad Handle Exits - Both the C and assembly functions make very 
  2089.         heavy use of pointers.  The code contains numerous checks to 
  2090.         ensure that memory does not get corrupted or randmomly written 
  2091.         over.  This error is normally caused by a stray pointer in the 
  2092.         application code!  Check and recheck all your pointer operations.  
  2093.         Doing strcpy's to arrays with insufficient space will always 
  2094.         cause this type of problem.
  2095.  
  2096.         Oftentimes switching from the small memory model to large memory 
  2097.         model will initially produce these errors in programs that were 
  2098.         working fine in the small model.  In nearly every case the 
  2099.         problem was traced to a stray pointer or improper pointer usage.
  2100.  
  2101.         Fatal Compilation Errors - All command line compilers should be 
  2102.         invoked with the compiler driver batch files provided as part of 
  2103.         The Window BOSS.  This insures the compiler specific compile time 
  2104.         parameters are specified correctly.  If you elect to use you own 
  2105.         method be sure to include ALL of the command line parameters that 
  2106.         are specified in the provide batch files.  
  2107.  
  2108.         Missing Files - Remember, the documentation covers two media 
  2109.         kits (Shareware, Source) and neither kit contains ALL files.  If 
  2110.         you are missing files that are listed for your media kit then 
  2111.         please contact us.
  2112.  
  2113.         Linking Errors - (A) See "Unresolved Externals" above. (B) Most 
  2114.         linking errors are the result of; (1) forgetting to specify the 
  2115.         library to link, (2) specifying the wrong library, or (3) command 
  2116.         line syntax errors.  Double check your compiler documentation for 
  2117.         the proper way to link "other libraries" or "3rd party 
  2118.         libraries".
  2119.  
  2120.         Other Problems - Double check this manual for proper usage, your 
  2121.         compile documentation, then contact us.
  2122.  
  2123.  
  2124.  
  2125.  
  2126.  
  2127.  
  2128.  
  2129.                                                            Page: 34
  2130.                                                      The Window BOSS
  2131.  
  2132.  
  2133.  
  2134.         8. Making Changes
  2135.  
  2136.         Incorporating local modifications or enhancements is, in part, 
  2137.         why you acquired the source code to begin with.  Incorporating 
  2138.         your modifications or enhancements should be be a relatively 
  2139.         straight forward task provided you follow the basic guidelines 
  2140.         outlined in the subsequent sections of this manual.  
  2141.  
  2142.         If you feel you have developed a significant enhancement that is 
  2143.         both well documented and written please let us know.  We have, 
  2144.         from time to time, incorporated customer supplied enhancements to 
  2145.         our products.  Contact us for further details.
  2146.  
  2147.         8.1. General Considerations
  2148.  
  2149.         First, be sure that you are familiar with the existing 
  2150.         conventions and compiler specific feature test switches. Refer to 
  2151.         the various BATch files for specific examples of compiler 
  2152.         specific defines etc.  
  2153.  
  2154.         Please note that we assume that you have installed your compiler 
  2155.         exactly as suggested in the compiler's manual.  This includes 
  2156.         suggested sub-directories, PATH specifiers, and environment 
  2157.         setup.  Check and double check the "include" file requirements - 
  2158.         make sure you have the required files and that they have been 
  2159.         edited to correspond to the memory model you are writing code 
  2160.         for. Creating code that compiles under numerous compilers is not 
  2161.         an easy task.  If you run into problems review your compilers 
  2162.         documentation and browse through the batch files provided.  If 
  2163.         you still have problems - call!  
  2164.  
  2165.         Carefully review the area of code you wish to modify or enhance - 
  2166.         be sure to get a complete understanding of what's currently going 
  2167.         on before you add your own code.  With the exception of the ASM 
  2168.         files, compiler and memory model specific feature test switches 
  2169.         are specified on the command line. 
  2170.  
  2171.         Depending upon the compiler being used, several warning errors 
  2172.         will be generated.  Warnings created by the unmodified 
  2173.         distribution code can be safely ignored - all others should be 
  2174.         investigated.
  2175.  
  2176.         A note of caution... PC/MS-DOS Version 2.XX's LINK can complain 
  2177.         if you build a new library that takes advantage of later LINK 
  2178.         enhancements.  If this occurs, you can (1) upgrade to DOS 3.1++ 
  2179.         or, (2) get a librarian that isn't so smart!!  We suggest going 
  2180.         to the later revision of DOS.
  2181.  
  2182.  
  2183.  
  2184.  
  2185.  
  2186.  
  2187.  
  2188.  
  2189.  
  2190.                                                            Page: 35
  2191.                                                      The Window BOSS
  2192.  
  2193.  
  2194.  
  2195.         Making Changes - continued.
  2196.  
  2197.  
  2198.         8.2. Specific Changes to Consider
  2199.  
  2200.         Both the Shareware and Source versions of The Window BOSS and 
  2201.         Data Clerk are supplied with the source code to the following 
  2202.         functions:
  2203.  
  2204.              wn_puts -      put string
  2205.              wn_gfloat -    get floating point number (data entry)
  2206.              wn_frmget -    get form (data entry)
  2207.              wn_iemsg -     error message handler (data entry)
  2208.              wn_ihmsg -     help message handler (data entry)
  2209.  
  2210.         The above source code was provided to serve as the basis upon 
  2211.         which you could develop your own enhancements to the product and 
  2212.         to provide you with those modules which may need to be modified 
  2213.         for your particular application.  The latter is true of 
  2214.         wn_frmget, wn_iemsg, and wn_ihmsg.  You should consider modifying 
  2215.         these routines if you want to change the way in which data entry 
  2216.         forms are handled when completed (wn_frmget), the way in which 
  2217.         data entry field help messages are displayed  (wn_ihmsg), or the 
  2218.         way in which data entry field error messages are displayed 
  2219.         (wn_iemsg).
  2220.  
  2221.         In the case of wn_frmget, the code to modify is at the tail end 
  2222.         of the file and is clearly labeled.  Data entry Help messages are 
  2223.         displayed by wn_ihmsg whenever F1 is depressed.  Data entry error 
  2224.         messages are displayed by wn_iemsg whenever validation for a 
  2225.         particular field fails.  Refer to the source code files and the 
  2226.         descriptions of these functions in the function synopsis section 
  2227.         of this document.
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.  
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.  
  2249.  
  2250.  
  2251.                                                            Page: 36
  2252.                                                      The Window BOSS
  2253.  
  2254.  
  2255.  
  2256.         Making Changes - continued.
  2257.  
  2258.  
  2259.         8.3. Making Changes - An Overview by The Numbers 
  2260.  
  2261.  
  2262.              1) If applicable, edit the assembler level modules as 
  2263.                 needed.  Be sure to set LPROG and LDATA (if they apply).  
  2264.                 ASSEMBLE.
  2265.  
  2266.              2) If Applicable, edit the "C" level modules.  COMPILE.
  2267.  
  2268.              3) Test your changes by linking the new/modified code 
  2269.                 with the existing libraries. For example to link your 
  2270.                 modified wn_move.c and v_getch:  (Microsoft example)
  2271.  
  2272.                   C> link myapp+wn_move+msvlib,,,swin
  2273.                 
  2274.                 If required, refer to your compiler documentation for 
  2275.                 explicit instructions on linking.
  2276.                                
  2277.              4) Update the existing Window BOSS libraries with the new 
  2278.                 "obj" files.  This is done with the librarian provided 
  2279.                 with your compiler.  Alternatively, you can use the batch 
  2280.                 files provided with the source code to recompile the 
  2281.                 entire library and rebuild, rather than update, The 
  2282.                 Window BOSS libraries.
  2283.  
  2284.                 If required, refer to your compiler documentation for 
  2285.                 explicit instructions on how to use their librarians to 
  2286.                 update libraries.
  2287.  
  2288.         Remember, the memory model of the assembly "obj" file must 
  2289.         correspond to the memory model of the C "obj" files and the 
  2290.         memory model of any existing libraries. 
  2291.  
  2292.         8.4. Assembly Language Object Files
  2293.  
  2294.         The Source Media Kit now includes the object files of the 
  2295.         assembly language functions used by The Window BOSS. This will 
  2296.         free you from having to acquire, or use, an assembler unless you 
  2297.         intend to make changes to those functions written in assembly 
  2298.         language!  Now, all you have to do is copy and or rename the 
  2299.         appropriate object file before running the "MAKELIB" batch file!  
  2300.         A object file matrix is provided to assist you in determining 
  2301.         which object file should be used with which compiler and memory 
  2302.         model.
  2303.  
  2304.  
  2305.  
  2306.  
  2307.  
  2308.  
  2309.  
  2310.  
  2311.  
  2312.                                                            Page: 37
  2313.                                                      The Window BOSS
  2314.  
  2315.  
  2316.  
  2317.         Making Changes - continued.
  2318.  
  2319.  
  2320.         8.5. Assembly Language Object File Matrix
  2321.  
  2322.         The matrix that follows identifies the relationship between the 
  2323.         object filename, compiler memory model, and the filename used as 
  2324.         part of the "MAKELIB" batch utility provided as part of The 
  2325.         Window BOSS.  Use this matrix to determine what file to rename 
  2326.         (or copy) when recreating Window BOSS libraries that DO NOT 
  2327.         include any changes or additions to existing assembly language 
  2328.         functions.
  2329.                        
  2330.                                Object File Matrix
  2331.  
  2332.         Compiler     SMALL     MEDIUM   COMPACT  LARGE      MAKELIB NAME
  2333.  
  2334.         Quick C      SMSVLIB   MMSVLIB  CMSVLIB  LMSVLIB    MSVLIB.OBJ
  2335.         MSC          SMSVLIB   MMSVLIB  CMSVLIB  LMSVLIB    MSVLIB.OBJ
  2336.         Turbo C      SMSVLIB   MMSVLIB  CMSVLIB  LMSVLIB    MSVLIB.OBJ
  2337.         Watcom       SWCVLIB   MWCVLIB  CWCVLIB  LWCVLIB    WCVLIB.OBJ
  2338.         Express C    -------   MWCVLIB  -------  -------    WCVLIB.OBJ
  2339.         Datalight    SDLVLIB   PDLVLIB  DDLVLIB  LDLVLIB    DLVLIB.OBJ
  2340.         Lattice 3    SVLIB     PVLIB    DVLIB    LVLIB      VLIB.OBJ
  2341.         Lattice 6    SVLIB     PVLIB    DVLIB    LVLIB      VLIB.OBJ
  2342.         Zortech      SMSVLIB   MMSVLIB  CMSVLIB  LMSVLIB    MSVLIB.OBJ
  2343.         CI86         SVLIB     -------  -------  LVLIB      VLIB.OBJ
  2344.         MIX          -------   PCVLIB   -------  -------    PCVLIB.MIX
  2345.         AZTEC        SAZVLIB   MAZVLIB  CAZVLIB  LAZVLIB    AZVLIB.O
  2346.  
  2347.         Example: Rebuild the Large model libaray for Microsoft C 5.1.  
  2348.         You would:
  2349.  
  2350.              (1) Use MCOMPILE to compile all C functions
  2351.  
  2352.                        C>MCOMPILE
  2353.  
  2354.              (2) Copy LMSVLIB.OBJ to MSVLIB.OBJ
  2355.  
  2356.                        C>COPY LMSVLIB.OBJ MSVLIB.OBJ
  2357.              
  2358.              (3) Rebuild the LARGE model library 
  2359.  
  2360.                        C>MAKELIB LWIN
  2361.  
  2362.  
  2363.  
  2364.  
  2365.  
  2366.  
  2367.  
  2368.  
  2369.  
  2370.  
  2371.  
  2372.  
  2373.                                                            Page: 38
  2374.                                                      The Window BOSS
  2375.  
  2376.  
  2377.  
  2378.         Making Changes - continued.
  2379.  
  2380.  
  2381.         8.6. Assembler Code
  2382.  
  2383.           Selecting the Memory Model:
  2384.  
  2385.              Computer Innovations and Lattice
  2386.  
  2387.                 1) vlib.asm     Edit - Set LATTICE to 1 for Lattice 
  2388.                                 DOS.MAC determines the memory model.
  2389.  
  2390.                                 Set LATTICE to 0 for Computer Innovations.
  2391.                                 MODEL.H determines the memory model.
  2392.  
  2393.                 2) model.h      CI86 only - Set "SMALL" & "LARGE"
  2394.                                 See MODEL.H for discussion.
  2395.  
  2396.              Microsoft C, QuickC, Borland Turbo C, Watcom C, Zortech
  2397.  
  2398.                 1) msvlib.asm   Set LDATA & LPROG to TRUE or FALSE 
  2399.                    wcvlib.asm   LDATA is TRUE for LARGE DATA
  2400.                                 LPROG is TRUE for LARGE CODE
  2401.                                 Assemble using:
  2402.                                   MASM /MX MSVLIB;   <- All but WATCOM
  2403.                                   MASM /MX WCVLIB;   <- WATCOM ONLY
  2404.  
  2405.              Datalight
  2406.  
  2407.                 1) dos.mac      Edit to reflect memory model. 
  2408.                                 Additionally, MACROS.ASM must be present.
  2409.                                 Assemble using:
  2410.                                       MASM /MX dlvlib; 
  2411.  
  2412.              MIX Power C
  2413.  
  2414.                 1) pcvlib.asm   Set LDATA to FALSE, LPROG to TRUE
  2415.                                 Assemble using:
  2416.                                       MASM /ML PCVLIB;
  2417.  
  2418.                                 Run the MIX utility on PCVLIB.OBJ
  2419.  
  2420.              Aztec C
  2421.                   
  2422.                 1) azvlib.asm   Set LDATA & LPROG to TRUE or FALSE 
  2423.                                 LDATA is TRUE for LARGE DATA
  2424.                                 LPROG is TRUE for LARGE CODE
  2425.                                 Assemble using:
  2426.                                       AS AZVLIB;
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.                                                            Page: 39
  2435.                                                      The Window BOSS
  2436.  
  2437.  
  2438.  
  2439.         Making Changes - continued.
  2440.  
  2441.  
  2442.  
  2443.         8.7. C Code
  2444.  
  2445.         Pattern your enhancements after existing code.  Both wn_puts.c and 
  2446.         wn_gfloat.c were provided explicity for this purpose.  The most 
  2447.         common mistakes are: (1) failing to call wn_activate, (2) failing 
  2448.         to check for error returns, and (3) failing to rebuild the 
  2449.         libraries correctly.
  2450.  
  2451.         Incorporating custom data entry functions is a straightforward 
  2452.         task if you follow the guidelines below.
  2453.  
  2454.              . Pattern your data entry routine after wn_gfloat.
  2455.  
  2456.              . Study the relationship between wn_gfloat and wn_frmget. 
  2457.  
  2458.              . Study the way in which arguments are loaded using the 
  2459.                unions v1 through v8.
  2460.  
  2461.              . Edit windows.h and expand the table of data entry function 
  2462.                codes to include a new code above 100, for example:
  2463.  
  2464.                        #define GCUSTOM  101
  2465.  
  2466.                The table of data entry function codes is located towards 
  2467.                the tail end of "windows.h" and begins with:
  2468.  
  2469.                        #define GDONE    0
  2470.  
  2471.              . Edit wn_frmget.c expanding the large case statement to 
  2472.                include a case for your custom data entry function.  
  2473.                Pattern the code you are adding after the existing code.
  2474.  
  2475.              . Rebuild the libraries adding your custom function and 
  2476.                replacing wn_frmget with the new version.
  2477.  
  2478.         Refer to wn_gfloat and wn_frmget....
  2479.  
  2480.              The general logic is to call the data entry function with 
  2481.              the arguement list corresponding to this occurance of this 
  2482.              type of field. The data entry function tests the value of 
  2483.              "fun". If it is "XEQ" then control immediately passes to the 
  2484.              logic that handles data entry.  If fun is "SET" then the 
  2485.              data entry function loads the form control block (indexed by 
  2486.              "fld") with the arguments being passed. This sets the stage 
  2487.              for subsequent calls (in a predetermined order) from 
  2488.              wn_frmget! When called, wn_frmget first displays all the 
  2489.              prompt fields, and then calls the data entry functions in 
  2490.              the order determined by the form control block.
  2491.  
  2492.  
  2493.  
  2494.  
  2495.                                                            Page: 40
  2496.                                                      The Window BOSS
  2497.  
  2498.  
  2499.  
  2500.         9. Function Call Synopsis
  2501.  
  2502.  
  2503.  
  2504.  
  2505.  
  2506.  
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.  
  2513.  
  2514.  
  2515.  
  2516.  
  2517.  
  2518.  
  2519.  
  2520.  
  2521.  
  2522.  
  2523.  
  2524.                  The Window BOSS and Data Clerk Function Library
  2525.  
  2526.  
  2527.  
  2528.  
  2529.  
  2530.  
  2531.  
  2532.  
  2533.  
  2534.  
  2535.  
  2536.  
  2537.  
  2538.  
  2539.  
  2540.  
  2541.  
  2542.  
  2543.  
  2544.  
  2545.  
  2546.  
  2547.  
  2548.  
  2549.  
  2550.  
  2551.  
  2552.  
  2553.  
  2554.  
  2555.  
  2556.                                                            Page: 41
  2557.                                                      The Window BOSS
  2558.  
  2559.  
  2560.  
  2561.         9.1. wn_init -- init window system
  2562.         9.2. wn_exit -- exit window system
  2563.         9.3. wn_psinit() -- init window system given physical screen size
  2564.  
  2565.         USAGE
  2566.  
  2567.           wn_init()
  2568.  
  2569.           wn_psinit(rows, columns)
  2570.           int rows, columns
  2571.  
  2572.              rows = # of rows on physical screen
  2573.              cols = # of columns on physical screen
  2574.  
  2575.           wn_exit()
  2576.  
  2577.           wn_init() or wn_psinit() and wn_exit(), if used, should be the 
  2578.           first and last functions called. Both wn_init() and wn_psinit() 
  2579.           save the video state and application entry screen.  wn_init() 
  2580.           or wn_psinit() is typically the very first function called in 
  2581.           the main program. wn_exit() restores the saved video state and 
  2582.           screen image.  wn_exit() is typically called just prior to 
  2583.           calling exit().
  2584.  
  2585.           wn_init() is the general case of wn_psinit().  It assumes a 
  2586.           physical screen size of 25x80 and therefore is the most 
  2587.           portable across video adapters.
  2588.  
  2589.           wn_psinit() allows those who need to use either the EGA 43x80 
  2590.           or VGA 50x80 line modes a handy way to save the existing 43 or 
  2591.           50 line screen image.  Examples:
  2592.  
  2593.              wn_psinit(43,80);             /* saves 43 line EGA screen */
  2594.              wn_psinit(50,80);             /* saves 50 line VGA screen */
  2595.           
  2596.         RETURNS
  2597.  
  2598.           TRUE if successful, FALSE if error.
  2599.  
  2600.         CAUTIONS and ADDITIONAL NOTES
  2601.  
  2602.           wn_psinit() does not check to see if the parameters passed are 
  2603.           valid for the adapter in use.
  2604.  
  2605.           wn_psinit() does not change video modes based on the parameters 
  2606.           passed.  It is the programmers responsibility to insure that 
  2607.           the video adapter is in the correct mode for the application.
  2608.  
  2609.           Calling wn_psinit() with parameters greater than can be handled 
  2610.           by the machines video adapter can have interesting but 
  2611.           undesirable results.
  2612.  
  2613.           Use of wn_psinit() should be restricted to machines equipped 
  2614.           with EGA or VGA adapters only.
  2615.  
  2616.  
  2617.                                                            Page: 42
  2618.                                                      The Window BOSS
  2619.  
  2620.  
  2621.  
  2622.         9.4. wn_dmode -- set window display mode
  2623.  
  2624.         USAGE
  2625.  
  2626.           wn_dmode(mode)
  2627.           int mode
  2628.  
  2629.                   mode = PAINT for painted windows
  2630.                   mode = FLASH for instant windows
  2631.  
  2632.           wn_dmode sets the windows display mode as per mode, PAINT style 
  2633.           windows appear to be painted (top to bottom) where FLASH style 
  2634.           windows instantly appear.
  2635.  
  2636.         RETURNS
  2637.  
  2638.           Nothing.
  2639.  
  2640.         CAUTIONS and ADDITIONAL NOTES
  2641.  
  2642.           CGA, EGA, and VGA only. Updates are made directly to video 
  2643.           memory.
  2644.  
  2645.  
  2646.  
  2647.  
  2648.  
  2649.  
  2650.  
  2651.  
  2652.  
  2653.  
  2654.  
  2655.  
  2656.  
  2657.  
  2658.  
  2659.  
  2660.  
  2661.  
  2662.  
  2663.  
  2664.  
  2665.  
  2666.  
  2667.  
  2668.  
  2669.  
  2670.  
  2671.  
  2672.  
  2673.  
  2674.  
  2675.  
  2676.  
  2677.  
  2678.                                                            Page: 43
  2679.                                                      The Window BOSS
  2680.  
  2681.  
  2682.  
  2683.         9.5. wn_open -- open window 
  2684.  
  2685.         USAGE
  2686.  
  2687.           wn = (WINDOWPTR)wn_open(page, row, col, width, height, atrib,
  2688.                 batrib)
  2689.           int page, row, col, width, height, atrib, batrib;
  2690.  
  2691.                 page -  0 ,1000, or 800. 
  2692.                         1000 opens a borderless page
  2693.                          800 opens an exploding window
  2694.                 row  -  row of upper left hand corner of the window
  2695.                 col  -  column of upper left hand corner of the window
  2696.                 width - INSIDE dimension (max value is 78, 80 
  2697.                         if page = 1000)
  2698.                 height- INSIDE dimension (max value is 23, 25 
  2699.                         if page = 1000)
  2700.                 atrib - attribute to be used IN the window
  2701.                 batrib- attribute to be used for the border
  2702.  
  2703.           wn_open is usually the first function called to create and use 
  2704.           a window.  wn_open dynamically allocates memory to save the 
  2705.           area defined by row, col, width, and height - saves the image, 
  2706.           opens the window and homes the logical cursor to row 0, col 0 
  2707.           of the window.  The window is now ready to be used by the 
  2708.           various window management routines.  
  2709.  
  2710.           Attributes are defined in windows.h.
  2711.  
  2712.         RETURNS
  2713.  
  2714.           wn = window handle or NULL if error
  2715.  
  2716.         CAUTIONS and ADDITIONAL NOTES
  2717.  
  2718.           Width and height are inside dimensions. If you want a window 
  2719.           with a work area of 10 rows and 5 columns, the width is 7 and 
  2720.           the height is 12.  
  2721.           
  2722.           The flashing cursor will not be displayed unless wn_sync() has 
  2723.           been called with a value of TRUE.  
  2724.  
  2725.           The window "wn" automatically becomes the top window tile upon 
  2726.           return.
  2727.  
  2728.           TSR programmers note: Exploding windows always use the system
  2729.           BIOS routines.
  2730.  
  2731.  
  2732.  
  2733.  
  2734.  
  2735.  
  2736.  
  2737.  
  2738.  
  2739.                                                            Page: 44
  2740.                                                      The Window BOSS
  2741.  
  2742.  
  2743.  
  2744.         9.6. wn_title -- title window
  2745.  
  2746.         USAGE
  2747.  
  2748.           wn_title(wn,title)
  2749.           WINDOWPTR wn;
  2750.           char *title;
  2751.  
  2752.                 wn    - window handle
  2753.                 title - string pointer to title
  2754.  
  2755.           The title is displayed on the top border of the window using 
  2756.           the currently defined border attribute.  The cursor is 
  2757.           positioned off the screen after the title is written.  
  2758.  
  2759.         RETURNS
  2760.  
  2761.           TRUE if all is well, NULL if the title is to large to fit on 
  2762.           the top border or error.
  2763.  
  2764.         CAUTIONS and ADDITIONAL NOTES
  2765.  
  2766.           The window "wn" automatically becomes the top window tile upon 
  2767.           return.
  2768.  
  2769.  
  2770.  
  2771.         9.7. wn_titla -- title window with attribute
  2772.  
  2773.         USAGE
  2774.  
  2775.           wn_titla(wn,title,atrib)
  2776.           WINDOWPTR wn;
  2777.           char *title;
  2778.           int atrib;
  2779.  
  2780.                 wn    - window handle
  2781.                 title - string pointer to title
  2782.                 atrib - attribute to use for text
  2783.  
  2784.           The title is displayed on the top border of the window using 
  2785.           the attribute specified by atrib.  The cursor is positioned off 
  2786.           the screen after the title is written.  
  2787.  
  2788.         RETURNS
  2789.  
  2790.           TRUE if all is well, NULL if the title is to large to fit on 
  2791.           the top border or error.
  2792.  
  2793.         CAUTIONS and ADDITIONAL NOTES
  2794.  
  2795.           The window "wn" automatically becomes the top window tile upon 
  2796.           return.
  2797.  
  2798.  
  2799.  
  2800.                                                            Page: 45
  2801.                                                      The Window BOSS
  2802.  
  2803.  
  2804.  
  2805.         9.8. wn_close -- close window
  2806.  
  2807.         USAGE
  2808.  
  2809.           wn_close(wn) 
  2810.           WINDOWPTR wn; 
  2811.  
  2812.                 wn - handle of a previously opened window.
  2813.  
  2814.           wn_close removes the window specified by wn and restores the 
  2815.           screen area under the window to its previous contents.  The 
  2816.           memory allocated by wn_open is returned to the free list.  The 
  2817.           cursor is positioned to where it was located prior to the 
  2818.           wn_open call.  
  2819.  
  2820.         RETURNS 
  2821.  
  2822.           TRUE or NULL if error
  2823.  
  2824.         CAUTIONS and ADDITIONAL NOTES 
  2825.  
  2826.           None.
  2827.  
  2828.  
  2829.  
  2830.         9.9. wn_save -- save screen image 
  2831.  
  2832.         USAGE
  2833.  
  2834.           wn = (WINDOWPTR)wn_save(page, row, col, width, height)
  2835.           int page, row, col, width, height;
  2836.  
  2837.                 page -  always 0.
  2838.                 row  -  row of upper left hand corner of the window
  2839.                 col  -  column of upper left hand corner of the window
  2840.                 width - INSIDE dimension (max value is 78)
  2841.                 height- INSIDE dimension (max value is 23)
  2842.  
  2843.           wn_save can be used to save areas of the screen for purposes 
  2844.           other than windows.  
  2845.  
  2846.           Memory for the screen image is dynamically allocated.
  2847.  
  2848.         RETURNS
  2849.  
  2850.           wn = window handle or NULL if error
  2851.  
  2852.         CAUTIONS and ADDITIONAL NOTES
  2853.  
  2854.           The window handle returned by wn_save should only be used with 
  2855.           wn_restore. Use with other routines could produce unpredictable 
  2856.           results.
  2857.  
  2858.  
  2859.  
  2860.  
  2861.                                                            Page: 46
  2862.                                                      The Window BOSS
  2863.  
  2864.  
  2865.  
  2866.         9.10. wn_restore -- restore saved screen image
  2867.  
  2868.         USAGE
  2869.  
  2870.           wn_restore(wn)
  2871.           WINDOWPTR wn;
  2872.  
  2873.                 wn - handle of previously wn_save(ed) window.
  2874.  
  2875.           Restores the screen image corresponding to the window handle 
  2876.           wn, and allocated memory is returned to the free list.
  2877.  
  2878.         RETURNS
  2879.  
  2880.           TRUE or NULL if error
  2881.  
  2882.         CAUTIONS and ADDITIONAL NOTES
  2883.  
  2884.           This function should only be used with window handles obtained 
  2885.           from wn_save.
  2886.  
  2887.  
  2888.  
  2889.         9.11. wn_move -- move window
  2890.  
  2891.         USAGE
  2892.  
  2893.           wn = (WINDOWPTR)wn_move(wn,row,col)
  2894.  
  2895.                 wn -  handle of window to be moved
  2896.                 row - destination row
  2897.                 col - destination column
  2898.  
  2899.           Moves the window corresponding to wn to a new location.  The 
  2900.           cursor is positioned off the screen after the call.  
  2901.  
  2902.         RETURNS
  2903.  
  2904.           Window handle of the window moved or NULL if error.
  2905.  
  2906.         CAUTIONS and ADDITIONAL NOTES
  2907.  
  2908.           The window "wn" automatically becomes the top window tile upon 
  2909.           return.
  2910.  
  2911.  
  2912.  
  2913.  
  2914.  
  2915.  
  2916.  
  2917.  
  2918.  
  2919.  
  2920.  
  2921.  
  2922.                                                            Page: 47
  2923.                                                      The Window BOSS
  2924.  
  2925.  
  2926.  
  2927.         9.12. wn_locate -- locate cursor in window
  2928.  
  2929.         USAGE
  2930.  
  2931.           wn_locate(wn, row, col)
  2932.           WINDOWPTR wn;
  2933.           int row, col;
  2934.  
  2935.                 wn  - window handle
  2936.                 row - row to position to (relative to window origin)
  2937.                 col - column to position to (relative to window origin)
  2938.  
  2939.           Position the cursor to the row and column specified.  Row and  
  2940.           Column values are relative to the origin of the window (0,0 
  2941.           locates the cursor in the upper left hand corner of the window 
  2942.           referenced by wn).
  2943.  
  2944.         RETURNS
  2945.  
  2946.           TRUE or NULL if error
  2947.  
  2948.         CAUTIONS and ADDITIONAL NOTES
  2949.  
  2950.           Values of row & col are not checked.
  2951.  
  2952.           The window "wn" automatically becomes the top window tile upon 
  2953.           return.
  2954.  
  2955.  
  2956.  
  2957.  
  2958.  
  2959.  
  2960.  
  2961.  
  2962.  
  2963.  
  2964.  
  2965.  
  2966.  
  2967.  
  2968.  
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.  
  2975.  
  2976.  
  2977.  
  2978.  
  2979.  
  2980.  
  2981.  
  2982.  
  2983.                                                            Page: 48
  2984.                                                      The Window BOSS
  2985.  
  2986.  
  2987.  
  2988.         9.13. wn_printf -- window printf
  2989.  
  2990.         USAGE
  2991.  
  2992.           wn_printf(wn, cs, args)
  2993.           WINDOWPTR wn;
  2994.           char *cs;
  2995.           ?? arg1 ... argn;
  2996.  
  2997.                 wn   - window handle
  2998.                 cs   - format control string
  2999.                 args - argument list
  3000.  
  3001.           printf function for windows!
  3002.  
  3003.         RETURNS
  3004.  
  3005.           TRUE or NULL if error
  3006.  
  3007.         CAUTIONS and ADDITIONAL NOTES
  3008.  
  3009.           Output string length is limited to 254 bytes.
  3010.           Registered users can (of course) edit the wn_printf function 
  3011.           and set the limit to whatever they wish.
  3012.  
  3013.           Integer only for Microsoft 3.0 and Aztec.  This limitation 
  3014.           be overcome by using sprintf in conjunction with wn_printf.  
  3015.           For example:
  3016.  
  3017.                   char buf[256];
  3018.                        ..
  3019.                        ..
  3020.                   sprintf(buf,"%d %l %x\n", intval, longval, hexval);
  3021.                   wn_printf(wn, buf);
  3022.  
  3023.           Full support for all others.  
  3024.  
  3025.           The window "wn" automatically becomes the top window tile upon 
  3026.           return.
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.  
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.  
  3041.  
  3042.  
  3043.  
  3044.                                                            Page: 49
  3045.                                                      The Window BOSS
  3046.  
  3047.  
  3048.  
  3049.         9.14. wn_puts -- put string (high speed)
  3050.         9.15. wn_putc -- put character 
  3051.  
  3052.         USAGE
  3053.  
  3054.           wn_puts(wn, row, col, string)
  3055.           WINDOWPTR wn;
  3056.           int row, col;
  3057.           char *string;
  3058.  
  3059.           wn_putc(wn, row, col, c)
  3060.           WINDOWPTR wn;
  3061.           int row, col;
  3062.           char c;
  3063.              
  3064.                 wn -    window handle
  3065.                 row -   row to print the string at
  3066.                 col -   column to print the string at
  3067.                 string- the string to print
  3068.                 c -     the character to print
  3069.  
  3070.           Row and Col are relative to the origin of the window.
  3071.  
  3072.           The cursor is displayed only if wn_synflg has been called with 
  3073.           a value of TRUE.
  3074.  
  3075.         RETURNS
  3076.  
  3077.           TRUE or NULL if error
  3078.  
  3079.         CAUTIONS and ADDITIONAL NOTES
  3080.  
  3081.           wn_puts writes the string directly to the video ram. Tabs, line 
  3082.           feeds, carriage returns and other control characters are not 
  3083.           filtered or processed in any way.
  3084.  
  3085.           Range checks are not performed to insure the specified string 
  3086.           can be contained in the window.  
  3087.  
  3088.           The window "wn" automatically becomes the top window tile upon 
  3089.           return.
  3090.  
  3091.  
  3092.  
  3093.  
  3094.  
  3095.  
  3096.  
  3097.  
  3098.  
  3099.  
  3100.  
  3101.  
  3102.  
  3103.  
  3104.  
  3105.                                                            Page: 50
  3106.                                                      The Window BOSS
  3107.  
  3108.  
  3109.  
  3110.         9.16. wn_gets -- get string with validation
  3111.  
  3112.         USAGE
  3113.  
  3114.           (char *) wn_gets(wn, buf, va, uva)
  3115.           WINDOWPTR wn;
  3116.           char *buf;
  3117.           int va;
  3118.           char *uva;
  3119.  
  3120.                 wn -    window handle
  3121.                 buf -   user buffer for string
  3122.                 va -    input validation to be used
  3123.                 uva -   user validation list [optional]
  3124.  
  3125.           va specifies the type of input validation to be performed as 
  3126.           data is being entered. Options are:
  3127.  
  3128.                 (1) none                no restrictions - accept everything
  3129.                 (2) integer             accept: 0 thru 9 + -
  3130.                 (3) floating point      accept: 0 thru 9 + - .
  3131.                 (4) alpha only          accept: a thru z 
  3132.                                         (upper & lower case)
  3133.                 (5) upper case only     accept: A thru Z 
  3134.                 (6) validation list     accept: only those characters
  3135.                     (optional)                  specified via uva string.
  3136.  
  3137.                 ORing va with 0x8000 disables data entry character echo.
  3138.  
  3139.           The following editing functions are supported:
  3140.  
  3141.                 . backspace & rubout do the logical things
  3142.                 . ^U, ^X, and ^C wipe the field clean
  3143.                 . Return and Esc end the input function 
  3144.  
  3145.           Data entry takes place at the current logical cursor location. 
  3146.           You  can, of course, position the cursor to where you wish 
  3147.           prior to calling wn_gets.
  3148.  
  3149.           Example:
  3150.  
  3151.                 wn_printf(wn,"Enter your name > ");
  3152.                 wn_gets(wn,buf,4,0);
  3153.  
  3154.         RETURNS
  3155.  
  3156.           Pointer to buf or NULL if error
  3157.  
  3158.         CAUTIONS and ADDITIONAL NOTES
  3159.  
  3160.           The window "wn" automatically becomes the top window tile upon   
  3161.           return.  This function is provided for historical purposes, 
  3162.           more complete and flexible functions are included as part of 
  3163.           the Data Clerk.
  3164.  
  3165.  
  3166.                                                            Page: 51
  3167.                                                      The Window BOSS
  3168.  
  3169.  
  3170.  
  3171.         9.17. wn_putsa -- put string and attribute (high speed)
  3172.         9.18. wn_putca -- put character and attribute
  3173.  
  3174.         USAGE
  3175.  
  3176.           wn_putsa(wn, row, col, string, atrib)
  3177.           WINDOWPTR wn;
  3178.           int row, col;
  3179.           char *string;
  3180.           int atrib;
  3181.  
  3182.           wn_putca(wn, row, col, c, atrib)
  3183.           WINDOWPTR wn;
  3184.           int row, col;
  3185.           char c;
  3186.           int atrib;
  3187.  
  3188.                 wn -    window handle
  3189.                 row -   row to print the string at
  3190.                 col -   column to print the string at
  3191.                 string- the string to print
  3192.                 c -     the character to print
  3193.                 atrib - attribute to be used with string
  3194.  
  3195.           Row and Col are relative to the origin of the window.
  3196.  
  3197.           The cursor is displayed only if wn_synflg has been called with 
  3198.           a value of TRUE.
  3199.  
  3200.         RETURNS
  3201.  
  3202.           TRUE or NULL if error
  3203.  
  3204.         CAUTIONS and ADDITIONAL NOTES
  3205.  
  3206.           wn_puts writes the string directly to the video ram. Tabs, line 
  3207.           feeds, carriage returns and other control characters are not 
  3208.           filtered or processed in any way.
  3209.  
  3210.           Range checks are not performed to insure the specified string 
  3211.           can be contained in the window.  
  3212.  
  3213.           The window "wn" automatically becomes the top window tile upon 
  3214.           return.
  3215.  
  3216.  
  3217.  
  3218.  
  3219.  
  3220.  
  3221.  
  3222.  
  3223.  
  3224.  
  3225.  
  3226.  
  3227.                                                            Page: 52
  3228.                                                      The Window BOSS
  3229.  
  3230.  
  3231.  
  3232.         9.19. wn_insrow -- insert row in window
  3233.  
  3234.         USAGE
  3235.  
  3236.           wn_insrow(wn, row)
  3237.           WINDOWPTR wn;
  3238.           int row;
  3239.  
  3240.                 wn -  window handle
  3241.                 row - row at which a line is to be inserted
  3242.  
  3243.           Row is relative to the origin of the window.  All lines below 
  3244.           the row specified are scrolled down.  The currently defined 
  3245.           window attribute is used to clear the lines inserted.  
  3246.  
  3247.         RETURNS
  3248.  
  3249.           TRUE or NULL if error
  3250.  
  3251.         CAUTIONS and ADDITIONAL NOTES
  3252.  
  3253.           The window "wn" automatically becomes the top window tile upon 
  3254.           return.
  3255.  
  3256.  
  3257.  
  3258.         9.20. wn_delrow -- delete row from window
  3259.  
  3260.         USAGE
  3261.  
  3262.           wn_delrow(wn, row)
  3263.           WINDOWPTR wn;
  3264.           int row;
  3265.  
  3266.                 wn -  window handle
  3267.                 row - row at which a line is to be deleted
  3268.  
  3269.           Row is relative to the origin of the window.  All lines below 
  3270.           the row specified are scrolled up. The currently defined window 
  3271.           attribute is used to clear the lines inserted.  
  3272.  
  3273.         RETURNS
  3274.  
  3275.           TRUE or NULL if error
  3276.  
  3277.         CAUTIONS and ADDITIONAL NOTES
  3278.           The window "wn" automatically becomes the top window tile upon 
  3279.           return.
  3280.  
  3281.  
  3282.  
  3283.  
  3284.  
  3285.  
  3286.  
  3287.  
  3288.                                                            Page: 53
  3289.                                                      The Window BOSS
  3290.  
  3291.  
  3292.  
  3293.         9.21. wn_clr -- clear window
  3294.  
  3295.         USAGE
  3296.  
  3297.           wn_clr(wn)
  3298.           WINDOWPTR wn;
  3299.  
  3300.                 wn - window handle
  3301.  
  3302.           The window corresponding to wn is cleared (mini clear screen).  
  3303.           The currently defined window attribute is used to clear the 
  3304.           interior of the window.  
  3305.  
  3306.           The windows virtual cursor is homed.
  3307.  
  3308.         RETURNS
  3309.  
  3310.           TRUE or NULL if error
  3311.  
  3312.         CAUTIONS and ADDITIONAL NOTES
  3313.  
  3314.           The window "wn" automatically becomes the top window tile upon 
  3315.           return.
  3316.  
  3317.  
  3318.  
  3319.         9.22. wn_activate -- activate window
  3320.  
  3321.         USAGE
  3322.  
  3323.           wn_activate(wn)
  3324.           WINDOWPTR wn;
  3325.  
  3326.              wn - window handle
  3327.  
  3328.           Activate a previously opened window.  The window specified by 
  3329.           "wn" becomes the top window tile.
  3330.  
  3331.         RETURNS
  3332.  
  3333.           TRUE or NULL if error
  3334.  
  3335.         CAUTIONS and ADDITIONAL NOTES
  3336.  
  3337.           None.
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.                                                            Page: 54
  3350.                                                      The Window BOSS
  3351.  
  3352.  
  3353.  
  3354.         9.23. wn_color -- set window & border attribute
  3355.  
  3356.         USAGE
  3357.  
  3358.           wn_color(wn, atrib, batrib)
  3359.           WINDOWPTR wn;
  3360.           unsigned int atrib, batrib;
  3361.  
  3362.                 wn -    window handle
  3363.                 atrib - attribute to be used for the window
  3364.                 batrib- attribute to be used for the border
  3365.  
  3366.           wn_color sets the attribute to be used for all subsequent 
  3367.           operations in the window.  The attribute byte contains the 
  3368.           background specific data in the upper 4 bits and the foreground 
  3369.           specific data in the lower 4 bits.  Color and bit definitions 
  3370.           can be found in windows.h. You can use a statement of the form:
  3371.  
  3372.                          atrib = (bground << 4 | fground);
  3373.  
  3374.           to set the attribute to the correct format.  
  3375.  
  3376.           Attributes are defined in windows.h.
  3377.  
  3378.         RETURNS
  3379.  
  3380.           Nothing.
  3381.  
  3382.         CAUTIONS and ADDITIONAL NOTES
  3383.  
  3384.           None.
  3385.  
  3386.  
  3387.  
  3388.  
  3389.  
  3390.  
  3391.  
  3392.  
  3393.  
  3394.  
  3395.  
  3396.  
  3397.  
  3398.  
  3399.  
  3400.  
  3401.  
  3402.  
  3403.  
  3404.  
  3405.  
  3406.  
  3407.  
  3408.  
  3409.  
  3410.                                                            Page: 55
  3411.                                                      The Window BOSS
  3412.  
  3413.  
  3414.  
  3415.         9.24. wn_wrap -- set/clear line wrap flag
  3416.  
  3417.         USAGE
  3418.  
  3419.           wn_wrap(wn, flag) 
  3420.           WINDOWPTR wn;     
  3421.           int flag;
  3422.  
  3423.                 wn -   window handle
  3424.                 flag - wrap flag (TRUE or FALSE)
  3425.  
  3426.           Sets the line wrap flag for window functions.  If line wrap is 
  3427.           true, output that exceeds the width of a window is 
  3428.           automatically placed on the next line.  When the line wrap flag 
  3429.           is false, output that exceeds the width of the window is lost.  
  3430.  
  3431.         RETURNS
  3432.  
  3433.           Nothing.
  3434.  
  3435.         CAUTIONS and ADDITIONAL NOTES
  3436.  
  3437.           None.
  3438.  
  3439.  
  3440.  
  3441.         9.25. wn_sync -- set/clear cursor synchronization flag
  3442.  
  3443.         USAGE
  3444.  
  3445.           wn_sync(wn, flag) 
  3446.           WINDOWPTR wn;     
  3447.           int flag;
  3448.  
  3449.                 wn -   window handle
  3450.                 flag - synchronization flag (TRUE or FALSE)
  3451.  
  3452.           When wn_sync is called with a value of TRUE all subsequent text 
  3453.           output to the window will have a flashing (normal) cursor 
  3454.           displayed following the last character output. Calling wn_sync 
  3455.           with a value of false inhibits the cursor from physically 
  3456.           advancing (it is always logically advanced).  
  3457.  
  3458.         RETURNS
  3459.  
  3460.           Nothing.
  3461.  
  3462.         CAUTIONS and ADDITIONAL NOTES
  3463.  
  3464.           None.
  3465.  
  3466.  
  3467.  
  3468.  
  3469.  
  3470.  
  3471.                                                            Page: 56
  3472.                                                      The Window BOSS
  3473.  
  3474.  
  3475.  
  3476.         9.26. wn_scroll -- set scrolling method for window
  3477.  
  3478.         USAGE
  3479.  
  3480.           wn_scroll(wn,method)
  3481.           WINDOWPTR wn;
  3482.           int method;
  3483.  
  3484.                   wn -      window handle.
  3485.                   method -  BIOS or DMAS
  3486.  
  3487.            Set the method to be used to scroll the contents of the window 
  3488.            to use either the rom bios (BIOS), or the flicker free DMA 
  3489.            logic.  BIOS and DMAS are defined in "windows.h".  
  3490.  
  3491.            The default scrolling mode is DMAS.
  3492.  
  3493.            The Window BOSS incorporates machine independent logic that 
  3494.            ensures that scrolling on color systems is performed in such a 
  3495.            way as to totally eliminate snow and flicker.  This logic, 
  3496.            although bulletproof, can slow scrolling down.  Setting the 
  3497.            scrolling method to BIOS provides a machine independent way to 
  3498.            improve the scrolling speed with a (perhaps) proportional 
  3499.            increase in flicker.  Keep in mind that recent developments in 
  3500.            CGA and EGA technology have, for the most part, eliminated 
  3501.            scrolling flicker at the hardware level.  If your system is 
  3502.            equipped with one of these boards, you may achieve a 
  3503.            noticeable improvement in scrolling speed by using wn_scroll() 
  3504.            to set the scrolling method to BIOS.  Additionally, there are 
  3505.            several console device drivers (FANSI and NANSI to mention 
  3506.            two) that "patch" the bios routines to achieve the same 
  3507.            result.  
  3508.  
  3509.            Setting the scrolling method to BIOS when wn_dmaflg=FALSE has 
  3510.            no effect.
  3511.  
  3512.         RETURNS
  3513.  
  3514.            Nothing.
  3515.  
  3516.         CAUTIONS and ADDITIONAL NOTES
  3517.  
  3518.            Color systems only.
  3519.  
  3520.  
  3521.  
  3522.  
  3523.  
  3524.  
  3525.  
  3526.  
  3527.  
  3528.  
  3529.  
  3530.  
  3531.  
  3532.                                                            Page: 57
  3533.                                                      The Window BOSS
  3534.  
  3535.  
  3536.  
  3537.         9.27. wn_dma -- set/clear write ram directly flag
  3538.  
  3539.         USAGE
  3540.  
  3541.           wn_dma(flag)      
  3542.           int flag;         
  3543.  
  3544.                 flag - write to video ram flag (TRUE or FALSE).
  3545.  
  3546.           The windowing routines assume that your video card supports 
  3547.           direct access to the video ram (normal for monochrome 
  3548.           monitors).  
  3549.  
  3550.         RETURNS
  3551.  
  3552.           Nothing.
  3553.  
  3554.         CAUTIONS and ADDITIONAL NOTES
  3555.  
  3556.           None.
  3557.  
  3558.  
  3559.  
  3560.         9.28. wn_fixcsr -- update window cursor position
  3561.  
  3562.         USAGE
  3563.  
  3564.           wn_fixcsr(wn)     
  3565.           WINDOWPTR wn;     
  3566.  
  3567.                 wn - window handle
  3568.  
  3569.           wn_fixcsr is a companion routine to wn_sync.  Causes the 
  3570.           physical cursor to be placed at the logical cursor location.  
  3571.           It is typically called after wn_sync has been called to disable 
  3572.           cursor synchronization.  wn_fixcsr does not alter the state of 
  3573.           the windows cursor synchronization flag.  
  3574.  
  3575.         RETURNS
  3576.  
  3577.           TRUE or NULL if error
  3578.  
  3579.         CAUTIONS and ADDITIONAL NOTES
  3580.  
  3581.           The window "wn" automatically becomes the top window tile upon 
  3582.           return.
  3583.  
  3584.  
  3585.  
  3586.  
  3587.  
  3588.  
  3589.  
  3590.  
  3591.  
  3592.  
  3593.                                                            Page: 58
  3594.                                                      The Window BOSS
  3595.  
  3596.  
  3597.  
  3598.         9.29. wn_boxset -- set box drawing character set
  3599.  
  3600.         USAGE
  3601.  
  3602.           wn_boxset(ul, ur, tb, sd, ll, lr);
  3603.           int ul, ur, tb, sd, ll, lr;
  3604.  
  3605.             ul - upper left corner character
  3606.             ur - upper right corner character
  3607.             tb - top/bottom line character
  3608.             sd - left/right side character
  3609.             ll - lower left corner character
  3610.             lr - lower right corner character
  3611.  
  3612.           wn_boxset set the characters to be used to frame all future 
  3613.           windows.
  3614.  
  3615.         RETURNS
  3616.  
  3617.           Nothing.
  3618.  
  3619.         CAUTIONS and ADDITIONAL NOTES
  3620.  
  3621.           None.
  3622.  
  3623.  
  3624.  
  3625.         9.30. wn_natrib -- set new attribute in window NOW!
  3626.  
  3627.         USAGE
  3628.  
  3629.           wn_natrib(wn,atrib)
  3630.           WINDOWPTR wn;
  3631.           int atrib;
  3632.  
  3633.             wn    - window handle
  3634.             atrib - attribute to set the window specified by wn to.  
  3635.  
  3636.           The attributes of the window are changed immediately.
  3637.  
  3638.           Attributes are defined in window.h
  3639.  
  3640.           The border is not altered.
  3641.  
  3642.         RETURNS
  3643.  
  3644.           TRUE or NULL if error
  3645.  
  3646.         CAUTIONS and ADDITIONAL NOTES
  3647.  
  3648.           The window "wn" automatically becomes the top window tile upon 
  3649.           return.
  3650.  
  3651.  
  3652.  
  3653.  
  3654.                                                            Page: 59
  3655.                                                      The Window BOSS
  3656.  
  3657.  
  3658.  
  3659.         9.31. wn_dborder -- draw (replace) border on window
  3660.  
  3661.         USAGE
  3662.  
  3663.           wn_dborder(wn, ul, ur, tb, sd, ll, lr);
  3664.           WINDOWPTR wn;
  3665.           int ul, ur, tb, sd, ll, lr;
  3666.  
  3667.             wn - window handle
  3668.             ul - upper left corner character
  3669.             ur - upper right corner character
  3670.             tb - top/bottom line character
  3671.             sd - left/right side character
  3672.             ll - lower left corner character
  3673.             lr - lower right corner character
  3674.  
  3675.           The currently defined border attribute is used when drawing the 
  3676.           border.
  3677.  
  3678.         RETURNS
  3679.  
  3680.           TRUE or NULL if error
  3681.  
  3682.         CAUTIONS and ADDITIONAL NOTES
  3683.  
  3684.           The window "wn" automatically becomes the top window tile upon 
  3685.           return.
  3686.  
  3687.  
  3688.  
  3689.  
  3690.  
  3691.  
  3692.  
  3693.  
  3694.  
  3695.  
  3696.  
  3697.  
  3698.  
  3699.  
  3700.  
  3701.  
  3702.  
  3703.  
  3704.  
  3705.  
  3706.  
  3707.  
  3708.  
  3709.  
  3710.  
  3711.  
  3712.  
  3713.  
  3714.  
  3715.                                                            Page: 60
  3716.                                                      The Window BOSS
  3717.  
  3718.  
  3719.  
  3720.         9.32. wn_input -- general purpose window input
  3721.  
  3722.         USAGE
  3723.  
  3724.           wn_input(wn, row, col, prmpt, mask, fill, atrib, ubuff,hlpmsg)
  3725.           
  3726.              (WINDOWPTR) wn  - window pointer
  3727.              int        row  - row in window where prompt is displayed
  3728.              int        col  - col in window where prompt is displayed
  3729.              char *    prmpt - field prompt 
  3730.              char *    mask  - data entry mask
  3731.              char      fill  - fill character
  3732.              unsigned  atrib - attributes to be used 
  3733.                                (fground<<4 | background)
  3734.              char *    ubuff - user text buffer of MAXSTR size
  3735.              char *    hlpmsg- user help message - displayed
  3736.                                when HELP is pressed
  3737.             
  3738.              wn_input is the Data Clerk's kernel. It is called by  
  3739.              virtually all the higher level data entry functions.
  3740.           
  3741.         RETURNS:
  3742.           
  3743.              NULL if error, else non zero value (scancode of last 
  3744.              valid exit key).
  3745.           
  3746.         CAUTIONS and ADDITIONAL NOTES:
  3747.           
  3748.              prmpt - If a prompt message is not to be provided, wn_input 
  3749.                      should be called with NSTR (null string) in  the 
  3750.                      place of the prompt message text pointer, for 
  3751.                      example:
  3752.           
  3753.                       wn_input(wn,row,col,NSTR,mask,fill,atrib,ubuff,hlpmsg)
  3754.                                           +--+
  3755.                      #defined in windows.h --^
  3756.           
  3757.                      The prompt is displayed with the current window 
  3758.                      attributes at the row and column specified in the 
  3759.                      call. Data entry begins immediately after the 
  3760.                      prompt.
  3761.           
  3762.              mask -  The mask determines what type of data may be entered 
  3763.                      on a character by character basis.  The control 
  3764.                      characters are as follows:
  3765.           
  3766.                       # - Number (0 thru 9, -, +)
  3767.                       a - Any ascii character 
  3768.                           (0x01 thru 0xff excluding 0x08)
  3769.                       x - Same as 'a', but without echo (password)
  3770.                       t - Any printable ascii char (' ' thru '~')
  3771.                       l - lower case character (a thru z)
  3772.                       u - upper case character (A thru Z)
  3773.  
  3774.  
  3775.  
  3776.                                                            Page: 61
  3777.                                                      The Window BOSS
  3778.  
  3779.  
  3780.  
  3781.         wn_input -- continued.
  3782.  
  3783.  
  3784.  
  3785.                       Mask Examples:
  3786.           
  3787.                        Date Mask           "##/##/##"
  3788.                        Time Mask           "##:##:##"
  3789.                        Integer Mask        "#######"
  3790.                        Float Mask          "FFFF.FF"
  3791.                        Phone Number        "(###) ###-####"
  3792.                        Upper Case Mask     "uuuuu" or "UUUUU"
  3793.                        Lower Case Mask     "lllll" or "LLLLL"
  3794.                        Ascii Mask          "aaaaa" or "AAAAA"
  3795.                        No Echo Ascii       "xxxxx" or "XXXXX"
  3796.                        Text Mask           "ttttt" or "TTTTT"
  3797.           
  3798.              fill -  The character to be used to fill the field where 
  3799.                      mask characters appear.  The typical choice for fill 
  3800.                      char is '_'.
  3801.           
  3802.              help  - If a HELP message is not to be provided, wn_input 
  3803.                      should be called with NSTR (null string) in the 
  3804.                      place of the help message text pointer, for example:
  3805.           
  3806.                       wn_input(wn,row,col,NSTR,mask,fill,atrib,ubuff,NSTR)
  3807.                                                                      +--+
  3808.                                                #defined in windows.h --^
  3809.                     
  3810.                      wn_ihmsg is called to display this message whenever 
  3811.                      the HELP (F1)key is depressed while the cursor is in 
  3812.                      the field.
  3813.           
  3814.              ubuff - Editing buffer.  Must be of sufficient size to hold 
  3815.                      the data as it is entered.  Typical size is the 
  3816.                      length of the mask + 2 bytes (strlen(mask)+2). 
  3817.                      Maximum length is MAXSTR.
  3818.           
  3819.                      On entry the first byte of ubuff should be a null, 
  3820.                      otherwise wn_input assumes there is valid data there 
  3821.                      and will enter edit mode.  This can be handy if 
  3822.                      there is a need for prefilled, but editable fields.  
  3823.                      In actual practice, wn_input uses this buffer for 
  3824.                      both initial character data entry and subsequent 
  3825.                      editing.
  3826.           
  3827.                      On return, ubuff contains the actual data entered in 
  3828.                      character format with fill and mask characters as 
  3829.                      spaces (e.g. "Now is the time          "). 
  3830.  
  3831.                      ubuff is returned left justified for non numeric 
  3832.                      masks.  If a completely numeric mask (#) was 
  3833.                      specified and the mask does not contain any other 
  3834.                      characters, ubuff is returned right justified.  
  3835.  
  3836.  
  3837.                                                            Page: 62
  3838.                                                      The Window BOSS
  3839.  
  3840.  
  3841.  
  3842.         wn_input -- continued.
  3843.  
  3844.  
  3845.  
  3846.              Editing Keys
  3847.  
  3848.                      Pressing the ESCape, RETURN/ENTER, UARROW, or DARROW 
  3849.                      key terminates input.  Since wn_input can be called 
  3850.                      alone or from any of the custom data entry routines 
  3851.                      (wn_gint, wn_gfloat) via wn_frmget, wn_input must be 
  3852.                      able to exit in a variety of ways. If wn_input has 
  3853.                      been called as the result of a call to wn_frmget, 
  3854.                      the UARROW and DARROW keys move to the previous and 
  3855.                      next fields respectively.  
  3856.  
  3857.                      Backspace and the cursor RIGHT ARROW and LEFT ARROW 
  3858.                      can be used to position the cursor during entry. The 
  3859.                      space bar can also be pressed when entering numeric 
  3860.                      fields provided that no "digits", "+", or "-" has 
  3861.                      been struck. Naturally, the HOME and END key work in 
  3862.                      a predictable fashion as do the INSert and DELete 
  3863.                      keys. The HOME key positions the cursor at the start 
  3864.                      of the field, END to end of the field.  The INSert 
  3865.                      key inserts a space at the current cursor position 
  3866.                      (pushing the contents of the field to the right.  
  3867.                      DELete deletes the character at the cursor location 
  3868.                      (dragging the contents of the field to the left).
  3869.           
  3870.                      When the field fills and RETURN/ENTER has not been 
  3871.                      struck, the cursor waits at the end of the field for 
  3872.                      RETURN/ENTER to be pressed.  You may also press 
  3873.                      Backspace, HOME, or LEFT ARROW - these allows the 
  3874.                      field to be edited again.
  3875.  
  3876.                      The cursor shape indicates whether or not data can 
  3877.                      be entered, or if you are beyond the fields edge.  
  3878.                      The cursor is half size (bottom half) when data can 
  3879.                      be entered, and half size (top half) when you are 
  3880.                      beyond the edge of the field.
  3881.           
  3882.                      BELLs automatically ring when you strike an invalid 
  3883.                      key or attempt to enter data beyond the edge of the 
  3884.                      field.  
  3885.  
  3886.              Miscellaneous
  3887.           
  3888.                      Choose your fill character wisely, as you can not 
  3889.                      enter that character as data in a field.
  3890.           
  3891.                      The data entry routines are pointer intensive. 
  3892.                      Failure to insure that they are called with 
  3893.                      arguments of the right type, size, and dimension 
  3894.                      will certainly cause undesired results.
  3895.  
  3896.  
  3897.  
  3898.                                                            Page: 63
  3899.                                                      The Window BOSS
  3900.  
  3901.  
  3902.  
  3903.         9.33. wn_frmopn -- open data entry form
  3904.  
  3905.         USAGE
  3906.  
  3907.           wn_frmopn(nfields)
  3908.           
  3909.              int     nfields - number of fields in form plus 1.
  3910.  
  3911.         RETURNS:
  3912.           
  3913.              Pointer to an array of field control blocks. (WIFORM)
  3914.           
  3915.                 or
  3916.           
  3917.              NULL if error (memory could not be allocated)
  3918.           
  3919.         CAUTIONS and ADDITIONAL NOTES:
  3920.           
  3921.              If wn_frmopn returns NULL, no attempt should be made to use 
  3922.              the data entry form in question.  NULL indicates that memory 
  3923.              could not be allocated for the form!
  3924.               
  3925.              This routine must be called before  wn_frmget and wn_frmcls.
  3926.  
  3927.              If your form contains 4 fields the call wn_frmopn as 
  3928.              follows:
  3929.  
  3930.                 WIFORM frm;
  3931.                   
  3932.                   frm = wn_frmopn(5);
  3933.  
  3934.              Fields are sequentially numbered starting from 0 ending at 
  3935.              nfields-2.  The extra field is used for internal purposes.
  3936.  
  3937.              Refer to "sample.c" for example(s) of usage.
  3938.  
  3939.  
  3940.  
  3941.  
  3942.  
  3943.  
  3944.  
  3945.  
  3946.  
  3947.  
  3948.  
  3949.  
  3950.  
  3951.  
  3952.  
  3953.  
  3954.  
  3955.  
  3956.  
  3957.  
  3958.  
  3959.                                                            Page: 64
  3960.                                                      The Window BOSS
  3961.  
  3962.  
  3963.  
  3964.         9.34. wn_frmget -- get (read) data entry form
  3965.  
  3966.         USAGE
  3967.  
  3968.           wn_frmget(frm)
  3969.           
  3970.              WIFORM   frm - valid field pointer.
  3971.           
  3972.         RETURNS:
  3973.           
  3974.              TRUE  - indicating all fields of the form in question have 
  3975.                      been fetched and verified (where required).
  3976.  
  3977.              (-2)  - indicating ESCape was pressed and form processing
  3978.                      was terminated.
  3979.           
  3980.                 or
  3981.           
  3982.              Never Returns!!
  3983.           
  3984.         CAUTIONS and ADDITIONAL NOTES:
  3985.           
  3986.              As provided, wn_frmget is very usable, however, you may wish 
  3987.              to modify it (source has been provided for this purpose) to 
  3988.              include some of your own custom forms or the way in which 
  3989.              forms are processed when completed. 
  3990.  
  3991.              As distributed, wn_frmget first displays all field prompts 
  3992.              and then positions to the first field, performs data entry 
  3993.              on a field by field basis from the first to the last 
  3994.              (allowing editing along the way), asks for a confirmation to 
  3995.              accept the fields on the form after the last field is 
  3996.              entered, either accepts the form, or drops into edit mode 
  3997.              for all the fields on the form starting at the first field.
  3998.  
  3999.              Refer to wn_input for a discussion of editing keys during 
  4000.              data entry.
  4001.           
  4002.              wn_frmget will not return unless ESCape is pressed or  all 
  4003.              data has been entered and verified (where required).
  4004.               
  4005.              This routine must be called after wn_frmopn, and before 
  4006.              wn_frmcls.
  4007.  
  4008.              Refer to "sample.c" for example(s) of usage.
  4009.  
  4010.  
  4011.  
  4012.  
  4013.  
  4014.  
  4015.  
  4016.  
  4017.  
  4018.  
  4019.  
  4020.                                                            Page: 65
  4021.                                                      The Window BOSS
  4022.  
  4023.  
  4024.  
  4025.         9.35. wn_frmcls -- close data entry form
  4026.  
  4027.         USAGE
  4028.  
  4029.              wn_frmcls(frm)
  4030.           
  4031.              (WIFORM) frm - pointer to an array of field control blocks
  4032.           
  4033.         RETURNS:
  4034.           
  4035.              TRUE 
  4036.           
  4037.         CAUTIONS and ADDITIONAL NOTES:
  4038.           
  4039.              This routine should only be called if memory is scarce or 
  4040.              there is no further need for the form you wish to close.  
  4041.              Once a form is closed, all traces of it vanish, the only way 
  4042.              to get it back is to start from scratch with wn_frmopn, 
  4043.              wn_frmget and so on.
  4044.  
  4045.              Closing a form has no impact on its visual image, just its 
  4046.              logical existence. If you wish to make a form vanish both 
  4047.              logically and visually - close the window it is anchored to 
  4048.              after, and only after, closing the form.
  4049.  
  4050.              In this release, a form is not automatically closed when the 
  4051.              window to which it is anchored is closed.  
  4052.  
  4053.              Refer to "sample.c" for example(s) of usage.
  4054.  
  4055.  
  4056.  
  4057.  
  4058.  
  4059.  
  4060.  
  4061.  
  4062.  
  4063.  
  4064.  
  4065.  
  4066.  
  4067.  
  4068.  
  4069.  
  4070.  
  4071.  
  4072.  
  4073.  
  4074.  
  4075.  
  4076.  
  4077.  
  4078.  
  4079.  
  4080.  
  4081.                                                            Page: 66
  4082.                                                      The Window BOSS
  4083.  
  4084.  
  4085.  
  4086.         9.36. wn_gdate - input date in window
  4087.  
  4088.         USAGE
  4089.  
  4090.           wn_gdate(fun,frm,fld,wn,row,col,prmpt,atrib,fill,month,day,year,
  4091.                    ubuff,hlpmsg,errmsg)
  4092.           
  4093.              int        fun - function code (SET || XEQ)
  4094.              (WIFORM)   frm - form pointer  (actual || NFRM)
  4095.              int        fld - field # in form (actual || NULL)
  4096.              (WINDOWPTR) wn - window pointer
  4097.              int        row - row in window where data input begins
  4098.              int        col - col in window where data input begins
  4099.              (char *) prmpt - field prompt (call with NSTR for none)
  4100.              unsigned atrib - field (not prompt) attributes 
  4101.              char      fill - field fill character
  4102.              (int *)  month - pointer to int for month (1-12)
  4103.              (int *)    day - pointer to int for day (1-31)
  4104.              (int *)   year - pointer to int for year (0-99)
  4105.              (char *) ubuff - pointer to char array of 10 bytes 
  4106.              (char *)hlpmsg - pointer to help message 
  4107.                               (call with NSTR for none)
  4108.              (char *)errmsg - pointer to err message
  4109.                               (call with NSTR for none)
  4110.           
  4111.         RETURNS:
  4112.           
  4113.              month, day, and year via pointers.
  4114.           
  4115.              NULL if error, else the non zero value returned from 
  4116.              wn_input.
  4117.           
  4118.         CAUTIONS and ADDITIONAL NOTES:
  4119.           
  4120.              fun - fun can only be SET for form setup, or XEQ for 
  4121.                    immediate execution.  When called with SET, valid 
  4122.                    arguments for both "frm" and "fld" must be specified.  
  4123.                    frm is the field pointer returned from wn_frmopn(), and 
  4124.                    fld is the field sequence number in the form for this 
  4125.                    field.  When called with XEQ frm must be NFRM and fld 
  4126.                    must be NFLD.
  4127.           
  4128.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  4129.                    the data as it is entered.  Minimum size is 10.
  4130.           
  4131.                    On entry, the first byte of ubuff should be a null, 
  4132.                    otherwise wn_input assumes there is valid data there 
  4133.                    and will enter edit mode.  This can be handy if there 
  4134.                    is a need for prefilled, but editable fields.  In 
  4135.                    actual practice, wn_input uses this buffer for both 
  4136.                    initial character data entry and subsequent editing.
  4137.  
  4138.  
  4139.  
  4140.  
  4141.  
  4142.                                                            Page: 67
  4143.                                                      The Window BOSS
  4144.  
  4145.  
  4146.  
  4147.         wn_gdate continued.
  4148.  
  4149.  
  4150.  
  4151.                    On return, ubuff contains the actual data entered in 
  4152.                    character format with fill and mask characters as 
  4153.                    spaces (e.g. "12 12 88").
  4154.  
  4155.              Only basic reasonability checks are made.  Therefore, dates 
  4156.              like 02/31/88 can be returned.
  4157.           
  4158.              Calls wn_input to perform data entry.
  4159.           
  4160.              Data must satisfy validation checks for function to return.
  4161.  
  4162.              Refer to "sample.c" for example(s) of usage.
  4163.  
  4164.  
  4165.  
  4166.  
  4167.  
  4168.  
  4169.  
  4170.  
  4171.  
  4172.  
  4173.  
  4174.  
  4175.  
  4176.  
  4177.  
  4178.  
  4179.  
  4180.  
  4181.  
  4182.  
  4183.  
  4184.  
  4185.  
  4186.  
  4187.  
  4188.  
  4189.  
  4190.  
  4191.  
  4192.  
  4193.  
  4194.  
  4195.  
  4196.  
  4197.  
  4198.  
  4199.  
  4200.  
  4201.  
  4202.  
  4203.                                                            Page: 68
  4204.                                                      The Window BOSS
  4205.  
  4206.  
  4207.  
  4208.         9.37. wn_gtime -- input time in window
  4209.  
  4210.         USAGE
  4211.  
  4212.           wn_gtime(fun,frm,fld,wn,row,col,prmpt,atrib,fill,hrs,mins,
  4213.                    secs,ubuff,hlpmsg,errmsg)
  4214.           
  4215.              int        fun - function code (SET || XEQ)
  4216.              (WIFORM)   frm - form pointer  (actual || NFRM)
  4217.              int        fld - field # in form (actual || NFLD)
  4218.              (WINDOWPTR) wn - window pointer
  4219.              int        row - row in window where data input begins
  4220.              int        col - col in window where data input begins
  4221.              (char *) prmpt - field prompt (call with NSTR for none)
  4222.              unsigned atrib - field (not prompt) attributes 
  4223.              char      fill - field fill character
  4224.              (int *)    hrs - pointer to int for month (0-24)
  4225.              (int *)   mins - pointer to int for day (0-59)
  4226.              (int *)   secs - pointer to int for year (0-59)
  4227.              (char *) ubuff - pointer to char array of 10 bytes 
  4228.              (char *)hlpmsg - pointer to help message 
  4229.                               (call with NSTR for none)
  4230.              (char *)errmsg - pointer to err message 
  4231.                               (call with NSTR for none)
  4232.           
  4233.         RETURNS:
  4234.           
  4235.              hrs, mins, and secs via pointers.
  4236.           
  4237.              NULL if error, else the non zero value returned from  
  4238.              wn_input.
  4239.           
  4240.         CAUTIONS and ADDITIONAL NOTES:
  4241.           
  4242.              fun - fun can only be SET for form setup, or XEQ for 
  4243.                    immediate execution.  When called with SET, valid 
  4244.                    arguments for both "frm" and "fld" must be specified.  
  4245.                    frm is the field pointer returned from wn_frmopn(), and 
  4246.                    fld is the field sequence number in the form for this 
  4247.                    field.  When called with XEQ frm must be NFRM and fld 
  4248.                    must be NFLD.
  4249.           
  4250.              ubuff - Editing buffer.  Must be of sufficient size to hold 
  4251.                    the data as it is entered.  Minimum size is 10.
  4252.           
  4253.                    On entry, the first byte of ubuff should be a null, 
  4254.                    otherwise wn_input assumes there is valid data there 
  4255.                    and will enter edit mode.  This can be handy if there 
  4256.                    is a need for prefilled, but editable fields.  In 
  4257.                    actual practice, wn_input uses this buffer for both 
  4258.                    initial character data entry and subsequent editing.
  4259.  
  4260.  
  4261.  
  4262.  
  4263.  
  4264.                                                            Page: 69
  4265.                                                      The Window BOSS
  4266.  
  4267.  
  4268.  
  4269.         wn_gtime - continued.
  4270.  
  4271.  
  4272.              
  4273.                     On return, ubuff contains the actual data entered in 
  4274.                     character format with fill and mask characters as 
  4275.                     spaces (e.g. "23 59 22").
  4276.           
  4277.              Only basic reasonability checks are made.  Therefore, times 
  4278.              like 24:59:59 can be returned.
  4279.           
  4280.              Calls wn_input to perform data entry.
  4281.           
  4282.              Data must satisfy validation checks for function to return.
  4283.  
  4284.              Refer to "sample.c" for example(s) of usage.
  4285.  
  4286.  
  4287.  
  4288.  
  4289.  
  4290.  
  4291.  
  4292.  
  4293.  
  4294.  
  4295.  
  4296.  
  4297.  
  4298.  
  4299.  
  4300.  
  4301.  
  4302.  
  4303.  
  4304.  
  4305.  
  4306.  
  4307.  
  4308.  
  4309.  
  4310.  
  4311.  
  4312.  
  4313.  
  4314.  
  4315.  
  4316.  
  4317.  
  4318.  
  4319.  
  4320.  
  4321.  
  4322.  
  4323.  
  4324.  
  4325.                                                            Page: 70
  4326.                                                      The Window BOSS
  4327.  
  4328.  
  4329.  
  4330.         9.38. wn_gphone -- input phone number in window
  4331.  
  4332.         USAGE
  4333.  
  4334.           wn_gphone(fun,frm,fld,wn,row,col,prmpt,atrib,fill,acode,
  4335.                     nnx,num,ubuff,hlpmsg,errmsg)
  4336.           
  4337.              int        fun - function code (SET || XEQ)
  4338.              (WIFORM)   frm - form pointer  (actual || NFRM)
  4339.              int        fld - field # in form (actual || NFLD)
  4340.              (WINDOWPTR) wn - window pointer
  4341.              int        row - row in window where data input begins
  4342.              int        col - col in window where data input begins
  4343.              (char *) prmpt - field prompt (call with NSTR for none)
  4344.              unsigned atrib - field (not prompt) attributes 
  4345.              char      fill - field fill character
  4346.              (int *)  acode - pointer to int for area code (3 digits)
  4347.              (int *)    nnx - pointer to int for nnx (3 digits)
  4348.              (int *)    num - pointer to int for number (4 digits)
  4349.              (char *) ubuff - pointer to char array of 18 bytes 
  4350.              (char *)hlpmsg - pointer to help message 
  4351.                               (call with NSTR for none)
  4352.              (char *)errmsg - pointer to err message 
  4353.                               (call with NSTR for none)
  4354.           
  4355.         RETURNS:
  4356.           
  4357.              acode, nnx, and num via pointers.
  4358.           
  4359.              NULL if error, else the non zero value returned from 
  4360.              wn_input.
  4361.                
  4362.         CAUTIONS and ADDITIONAL NOTES:
  4363.           
  4364.              fun - fun can only be SET for form setup, or XEQ for 
  4365.                    immediate execution.  When called with SET, valid 
  4366.                    arguments for both "frm" and "fld" must be specified.  
  4367.                    frm is the field pointer returned from wn_frmopn(), and 
  4368.                    fld is the field sequence number in the form for this 
  4369.                    field.  When called with XEQ frm must be NFRM and fld 
  4370.                    must be NFLD.
  4371.           
  4372.              ubuff - Editing buffer.  Must be of sufficient size to hold 
  4373.                    the data as it is entered.  Minimum size is 18 bytes.
  4374.           
  4375.                    On entry, the first byte of ubuff should be a null, 
  4376.                    otherwise wn_input assumes there is valid data there 
  4377.                    and will enter edit mode.  This can be handy if there 
  4378.                    is a need for prefilled, but editable fields.  In 
  4379.                    actual practice, wn_input uses this buffer for both 
  4380.                    initial character data entry and subsequent editing.
  4381.  
  4382.  
  4383.  
  4384.  
  4385.  
  4386.                                                            Page: 71
  4387.                                                      The Window BOSS
  4388.  
  4389.  
  4390.  
  4391.         wn_gphone - continued.  
  4392.  
  4393.  
  4394.  
  4395.                    On return, ubuff contains the actual data entered in 
  4396.                    character format with fill and mask characters as 
  4397.                    spaces (e.g. 800 555 1212).
  4398.           
  4399.             No validation is performed.
  4400.           
  4401.             Leaving the field blank returns 0 for ACODE, NNX, and NUM.
  4402.           
  4403.             Calls wn_input to perform data entry.
  4404.  
  4405.             Refer to "sample.c" for example(s) of usage.
  4406.  
  4407.  
  4408.  
  4409.  
  4410.  
  4411.  
  4412.  
  4413.  
  4414.  
  4415.  
  4416.  
  4417.  
  4418.  
  4419.  
  4420.  
  4421.  
  4422.  
  4423.  
  4424.  
  4425.  
  4426.  
  4427.  
  4428.  
  4429.  
  4430.  
  4431.  
  4432.  
  4433.  
  4434.  
  4435.  
  4436.  
  4437.  
  4438.  
  4439.  
  4440.  
  4441.  
  4442.  
  4443.  
  4444.  
  4445.  
  4446.  
  4447.                                                            Page: 72
  4448.                                                      The Window BOSS
  4449.  
  4450.  
  4451.  
  4452.         9.39. wn_gtext -- input text in window
  4453.         9.40. wn_gutext -- input uppper case text in window
  4454.         9.41. wn_gltext -- input lower case text in window
  4455.  
  4456.         USAGE
  4457.  
  4458.           wn_gtext(fun,frm,fld,wn,row,col,prmpt,atrib,fill,fwidth,
  4459.                    ubuff,hlpmsg,errmsg)
  4460.           wn_gutext(..same as wn_gtext)
  4461.           wn_gltext(..same as wn_gtext)
  4462.  
  4463.              int        fun - function code (SET || XEQ)
  4464.              (WIFORM)   frm - form pointer  (actual || NFRM)
  4465.              int        fld - field # in form (actual || NFLD)
  4466.              (WINDOWPTR) wn - window pointer
  4467.              int        row - row in window where data input begins
  4468.              int        col - col in window where data input begins
  4469.              (char *) prmpt - field prompt (call with NSTR for none)
  4470.              unsigned atrib - field (not prompt) attributes 
  4471.              char      fill - field fill character
  4472.              int     fwidth - width of mask (maximum # of digits is MAXSTR)
  4473.              (char *) ubuff - pointer to char array of fwidth+2 bytes 
  4474.              (char *)hlpmsg - pointer to help message 
  4475.                               (call with NSTR for none)
  4476.              (char *)errmsg - pointer to err message 
  4477.                               (call with NSTR for none)
  4478.           
  4479.         RETURNS:
  4480.           
  4481.              ubuff with text data via pointer.
  4482.           
  4483.              NULL if error, else the non zero value returned from 
  4484.              wn_input.
  4485.           
  4486.         CAUTIONS and ADDITIONAL NOTES:
  4487.           
  4488.              fun - fun can only be SET for form setup, or XEQ for 
  4489.                    immediate execution.  When called with SET, valid 
  4490.                    arguments for both "frm" and "fld" must be specified.  
  4491.                    frm is the field pointer returned from wn_frmopn(), and 
  4492.                    fld is the field sequence number in the form for this 
  4493.                    field.  When called with XEQ frm must be NFRM and fld 
  4494.                    must be NFLD.
  4495.           
  4496.              ubuff - Editing buffer.  Must be of sufficient size to hold 
  4497.                    the data as it is entered.  Minimum size is fwidth+2.
  4498.           
  4499.                    On entry, the first byte of ubuff should be a null, 
  4500.                    otherwise wn_input assumes there is valid data there 
  4501.                    and will enter edit mode.  This can be handy if there 
  4502.                    is a need for prefilled, but editable fields.  In 
  4503.                    actual practice, wn_input uses this buffer for both 
  4504.                    initial character data entry and subsequent editing.
  4505.  
  4506.  
  4507.  
  4508.                                                            Page: 73
  4509.                                                      The Window BOSS
  4510.  
  4511.  
  4512.  
  4513.         wn_gtext - continued.
  4514.  
  4515.  
  4516.  
  4517.                     On return, ubuff contains the actual data entered in 
  4518.                     character format with fill and mask characters as 
  4519.                     spaces (e.g. "This is a line of text ").
  4520.  
  4521.                     Case conversion is automatically performed when 
  4522.                     wn_gutext() or wn_gltext() are called.
  4523.           
  4524.             Calls wn_input to perform data entry.
  4525.           
  4526.             No validation is performed.
  4527.  
  4528.             Refer to "sample.c" for example(s) of usage.
  4529.  
  4530.  
  4531.  
  4532.  
  4533.  
  4534.  
  4535.  
  4536.  
  4537.  
  4538.  
  4539.  
  4540.  
  4541.  
  4542.  
  4543.  
  4544.  
  4545.  
  4546.  
  4547.  
  4548.  
  4549.  
  4550.  
  4551.  
  4552.  
  4553.  
  4554.  
  4555.  
  4556.  
  4557.  
  4558.  
  4559.  
  4560.  
  4561.  
  4562.  
  4563.  
  4564.  
  4565.  
  4566.  
  4567.  
  4568.  
  4569.                                                            Page: 74
  4570.                                                      The Window BOSS
  4571.  
  4572.  
  4573.  
  4574.         9.42. wn_gpword -- input password in window
  4575.  
  4576.         USAGE
  4577.  
  4578.           wn_gpword(fun,frm,fld,wn,row,col,prmpt,atrib,fill,fwidth,
  4579.                    ubuff,hlpmsg,errmsg)
  4580.           
  4581.              int        fun - function code (SET || XEQ)
  4582.              (WIFORM)   frm - form pointer  (actual || NFRM)
  4583.              int        fld - field # in form (actual || NFLD)
  4584.              (WINDOWPTR) wn - window pointer
  4585.              int        row - row in window where data input begins
  4586.              int        col - col in window where data input begins
  4587.              (char *) prmpt - field prompt (call with NSTR for none)
  4588.              unsigned atrib - field (not prompt) attributes 
  4589.              char      fill - field fill character
  4590.              int     fwidth - width of mask (maximum # of digits is MAXSTR)
  4591.              (char *) ubuff - pointer to char array of fwidth+2 bytes 
  4592.              (char *)hlpmsg - pointer to help message 
  4593.                               (call with NSTR for none)
  4594.              (char *)errmsg - pointer to err message 
  4595.                               (call with NSTR for none)
  4596.           
  4597.         RETURNS:
  4598.           
  4599.              ubuff with text data via pointer.
  4600.           
  4601.              NULL if error, else the non zero value returned from 
  4602.              wn_input.
  4603.           
  4604.         CAUTIONS and ADDITIONAL NOTES:
  4605.           
  4606.              fun - fun can only be SET for form setup, or XEQ for 
  4607.                    immediate execution.  When called with SET, valid 
  4608.                    arguments for both "frm" and "fld" must be specified.  
  4609.                    frm is the field pointer returned from wn_frmopn(), and 
  4610.                    fld is the field sequence number in the form for this 
  4611.                    field.  When called with XEQ frm must be NFRM and fld 
  4612.                    must be NFLD.
  4613.           
  4614.              ubuff - Editing buffer.  Must be of sufficient size to hold 
  4615.                    the data as it is entered.  Minimum size is fwidth+2.
  4616.           
  4617.                    On entry, the first byte of ubuff should be a null. 
  4618.                    Since this fucntion is for PASSWORD entry, editing is 
  4619.                    not available. The contents of the edit buffer on 
  4620.                    entry is ignored.
  4621.  
  4622.  
  4623.  
  4624.  
  4625.  
  4626.  
  4627.  
  4628.  
  4629.  
  4630.                                                            Page: 75
  4631.                                                      The Window BOSS
  4632.  
  4633.  
  4634.  
  4635.         wn_gpword - continued.
  4636.  
  4637.  
  4638.  
  4639.                     On return, ubuff contains the actual data entered in 
  4640.                     character format with fill and mask characters as 
  4641.                     spaces (e.g. "This is a line of text ").
  4642.           
  4643.             Calls wn_input to perform data entry.
  4644.           
  4645.             No validation is performed. 
  4646.  
  4647.  
  4648.  
  4649.  
  4650.  
  4651.  
  4652.  
  4653.  
  4654.  
  4655.  
  4656.  
  4657.  
  4658.  
  4659.  
  4660.  
  4661.  
  4662.  
  4663.  
  4664.  
  4665.  
  4666.  
  4667.  
  4668.  
  4669.  
  4670.  
  4671.  
  4672.  
  4673.  
  4674.  
  4675.  
  4676.  
  4677.  
  4678.  
  4679.  
  4680.  
  4681.  
  4682.  
  4683.  
  4684.  
  4685.  
  4686.  
  4687.  
  4688.  
  4689.  
  4690.  
  4691.                                                            Page: 76
  4692.                                                      The Window BOSS
  4693.  
  4694.  
  4695.  
  4696.         9.43. wn_gint -- input integer in window
  4697.  
  4698.         USAGE
  4699.  
  4700.            wn_gint(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
  4701.                    fwidth,low,high,ubuff,hlpmsg,errmsg)
  4702.           
  4703.               int        fun - function code (SET || XEQ)
  4704.               (WIFORM)   frm - form pointer  (actual || NFRM)
  4705.               int        fld - field # in form (actual || NFLD)
  4706.               (WINDOWPTR) wn - window pointer
  4707.               int        row - row in window where data input begins
  4708.               int        col - col in window where data input begins
  4709.               (char *) prmpt - field prompt (call with NSTR for none)
  4710.               unsigned atrib - field (not prompt) attributes 
  4711.               char      fill - field fill character
  4712.               (int *)  value - pointer to int for return value (low-high)
  4713.               int     fwidth - width of mask 
  4714.                                (maximum # of digits is 6 with sign)
  4715.               int        low - minimum value (lower limit of value)
  4716.               int       high - maximum value (upper limit of value)
  4717.               (char *) ubuff - pointer to char array of 10 bytes 
  4718.               (char *)hlpmsg - pointer to help message 
  4719.                                (call with NSTR for none)
  4720.               (char *)errmsg - pointer to err message 
  4721.                                (call with NSTR for none)
  4722.           
  4723.         RETURNS:
  4724.           
  4725.               value via pointer.
  4726.           
  4727.               NULL if error, else the non zero value returned from 
  4728.               wn_input.
  4729.           
  4730.         CAUTIONS and ADDITIONAL NOTES:
  4731.           
  4732.             fun -  fun can only be SET for form setup, or XEQ for 
  4733.                    immediate execution.  When called with SET, valid 
  4734.                    arguments for both "frm" and "fld" must be specified.  
  4735.                    frm is the field pointer returned from wn_frmopn(), and 
  4736.                    fld is the field sequence number in the form for this 
  4737.                    field.  When called with XEQ frm must be NFRM and fld 
  4738.                    must be NFLD.
  4739.           
  4740.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  4741.                    the data as it is entered.  Minimum size is 10 bytes.
  4742.           
  4743.                    On entry, the first byte of ubuff should be a null, 
  4744.                    otherwise wn_input assumes there is valid data there 
  4745.                    and will enter edit mode.  This can be handy if there 
  4746.                    is a need for prefilled, but editable fields.  In 
  4747.                    actual practice, wn_input uses this buffer for both 
  4748.                    initial character data entry and subsequent editing.
  4749.  
  4750.  
  4751.  
  4752.                                                            Page: 77
  4753.                                                      The Window BOSS
  4754.  
  4755.  
  4756.  
  4757.         wn_gint - continued.  
  4758.  
  4759.  
  4760.  
  4761.                     On return, ubuff contains the actual data entered in 
  4762.                     character format with fill and mask characters as 
  4763.                     spaces.
  4764.           
  4765.             Calls wn_input to perform data entry.
  4766.           
  4767.             Data must satisfy validation checks for function to return.
  4768.           
  4769.             Calls wn_iemsg(errmsg) when validation fails.
  4770.  
  4771.             Refer to "sample.c" for example(s) of usage.
  4772.  
  4773.  
  4774.  
  4775.  
  4776.  
  4777.  
  4778.  
  4779.  
  4780.  
  4781.  
  4782.  
  4783.  
  4784.  
  4785.  
  4786.  
  4787.  
  4788.  
  4789.  
  4790.  
  4791.  
  4792.  
  4793.  
  4794.  
  4795.  
  4796.  
  4797.  
  4798.  
  4799.  
  4800.  
  4801.  
  4802.  
  4803.  
  4804.  
  4805.  
  4806.  
  4807.  
  4808.  
  4809.  
  4810.  
  4811.  
  4812.  
  4813.                                                            Page: 78
  4814.                                                      The Window BOSS
  4815.  
  4816.  
  4817.  
  4818.         9.44. wn_guint - input unsigned integer in window
  4819.  
  4820.         USAGE
  4821.  
  4822.            wn_guint(fun,frm,fld,wn,row,col,prmpt,atrib,fill,v,
  4823.                     fwidth,low,high,ubuff,hlpmsg,errmsg)
  4824.           
  4825.               int        fun - function code (SET || XEQ)
  4826.               (WIFORM)   frm - form pointer  (actual || NFRM)
  4827.               int        fld - field # in form (actual || NFLD)
  4828.               (WINDOWPTR)wn  - window pointer
  4829.               int        row - row in window where data input begins
  4830.               int        col - col in window where data input begins
  4831.               (char *) prmpt - field prompt (call with NSTR for none)
  4832.               unsigned atrib - field (not prompt) attributes 
  4833.               char      fill - field fill character
  4834.               (unsigned *) v - pointer to int for return value (low-high)
  4835.               int     fwidth - width of mask 
  4836.                                (maximum # of digits is 6 with sign)
  4837.               unsigned   low - minimum value (lower limit of value)
  4838.               unsigned  high - maximum value (upper limit of value)
  4839.               (char *) ubuff - pointer to char array of 10 bytes 
  4840.               (char *)hlpmsg - pointer to help message 
  4841.                                (call with NSTR for none)
  4842.               (char *)errmsg - pointer to err message 
  4843.                                (call with NSTR for none)
  4844.           
  4845.         RETURNS:
  4846.           
  4847.               v via pointer.
  4848.           
  4849.               NULL if error, else the non zero value returned from 
  4850.               wn_input.
  4851.           
  4852.         CAUTIONS and ADDITIONAL NOTES:
  4853.           
  4854.             fun -  fun can only be SET for form setup, or XEQ for 
  4855.                    immediate execution.  When called with SET, valid 
  4856.                    arguments for both "frm" and "fld" must be specified.  
  4857.                    frm is the field pointer returned from wn_frmopn(), and 
  4858.                    fld is the field sequence number in the form for this 
  4859.                    field.  When called with XEQ frm must be NFRM and fld 
  4860.                    must be NFLD.
  4861.           
  4862.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  4863.                    the data as it is entered.  Minumum size is 10 bytes.
  4864.  
  4865.  
  4866.  
  4867.  
  4868.  
  4869.  
  4870.  
  4871.  
  4872.  
  4873.  
  4874.                                                            Page: 79
  4875.                                                      The Window BOSS
  4876.  
  4877.  
  4878.  
  4879.         wn_guint - continued.
  4880.  
  4881.  
  4882.  
  4883.                    On entry, the first byte of ubuff should be a null, 
  4884.                    otherwise wn_input assumes there is valid data there 
  4885.                    and will enter edit mode.  This can be handy if there 
  4886.                    is a need for prefilled, but editable fields.  In 
  4887.                    actual practice, wn_input uses this buffer for both 
  4888.                    initial character data entry and subsequent editing.
  4889.  
  4890.                    On return, ubuff contains the actual data entered in 
  4891.                    character format with fill and mask characters as 
  4892.                    spaces (e.g. "-24000").
  4893.           
  4894.             Calls wn_input to perform data entry.
  4895.           
  4896.             Data must satisfy validation checks for function to return.
  4897.           
  4898.             Calls wn_iemsg(errmsg) when validation fails.
  4899.  
  4900.             Refer to "sample.c" for example(s) of usage.
  4901.  
  4902.  
  4903.  
  4904.  
  4905.  
  4906.  
  4907.  
  4908.  
  4909.  
  4910.  
  4911.  
  4912.  
  4913.  
  4914.  
  4915.  
  4916.  
  4917.  
  4918.  
  4919.  
  4920.  
  4921.  
  4922.  
  4923.  
  4924.  
  4925.  
  4926.  
  4927.  
  4928.  
  4929.  
  4930.  
  4931.  
  4932.  
  4933.  
  4934.  
  4935.                                                            Page: 80
  4936.                                                      The Window BOSS
  4937.  
  4938.  
  4939.  
  4940.         9.45. wn_glong -- input long integer in window
  4941.  
  4942.         USAGE
  4943.  
  4944.            wn_glong(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
  4945.                     fwidth,low,high,ubuff,hlpmsg,errmsg)
  4946.           
  4947.               int        fun - function code (SET || XEQ)
  4948.               (WIFORM)   frm - form pointer  (actual || NFRM)
  4949.               int        fld - field # in form (actual || NFLD)
  4950.               (WINDOWPTR) wn - window pointer
  4951.               int        row - row in window where data input begins
  4952.               int        col - col in window where data input begins
  4953.               (char *) prmpt - field prompt (call with NSTR for none)
  4954.               unsigned atrib - field (not prompt) attributes 
  4955.               char      fill - field fill character
  4956.               (long*)  value - pointer to long for return value (low-high)
  4957.               int     fwidth - width of mask 
  4958.                                (maximum # of digits is 10 with sign)
  4959.               long       low - minimum value (lower limit of value)
  4960.               long      high - maximum value (upper limit of value)
  4961.               (char *) ubuff - pointer to char array of fwidth+2 bytes 
  4962.               (char *)hlpmsg - pointer to help message 
  4963.                                (call with NSTR for none)
  4964.               (char *)errmsg - pointer to err message 
  4965.                                (call with NSTR for none)
  4966.           
  4967.         RETURNS:
  4968.           
  4969.               v via pointer.
  4970.           
  4971.               NULL if error, else the non zero value returned from 
  4972.               wn_input.
  4973.           
  4974.         CAUTIONS and ADDITIONAL NOTES:
  4975.           
  4976.             fun -  fun can only be SET for form setup, or XEQ for 
  4977.                    immediate execution.  When called with SET, valid 
  4978.                    arguments for both "frm" and "fld" must be specified.  
  4979.                    frm is the field pointer returned from wn_frmopn(), and 
  4980.                    fld is the field sequence number in the form for this 
  4981.                    field.  When called with XEQ frm must be NFRM and fld 
  4982.                    must be NFLD.
  4983.           
  4984.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  4985.                    the data as it is entered.  Minumun size is fwidth+2.
  4986.           
  4987.                    On entry, the first byte of ubuff should be a null, 
  4988.                    otherwise wn_input assumes there is valid data there 
  4989.                    and will enter edit mode.  This can be handy if there 
  4990.                    is a need for prefilled, but editable fields.  In 
  4991.                    actual practice, wn_input uses this buffer for both 
  4992.                    initial character data entry and subsequent editing.
  4993.  
  4994.  
  4995.  
  4996.                                                            Page: 81
  4997.                                                      The Window BOSS
  4998.  
  4999.  
  5000.  
  5001.         wn_glong - continued.  
  5002.  
  5003.  
  5004.  
  5005.                    On return, ubuff contains the actual data entered in 
  5006.                    character format with fill and mask characters as 
  5007.                    spaces (e.g. "-24000").
  5008.           
  5009.             Calls wn_input to perform data entry.
  5010.           
  5011.             Data must satisfy validation checks for function to return.
  5012.           
  5013.             Calls wn_iemsg(errmsg) when validation fails.
  5014.  
  5015.             Refer to "sample.c" for example(s) of usage.
  5016.  
  5017.  
  5018.  
  5019.  
  5020.  
  5021.  
  5022.  
  5023.  
  5024.  
  5025.  
  5026.  
  5027.  
  5028.  
  5029.  
  5030.  
  5031.  
  5032.  
  5033.  
  5034.  
  5035.  
  5036.  
  5037.  
  5038.  
  5039.  
  5040.  
  5041.  
  5042.  
  5043.  
  5044.  
  5045.  
  5046.  
  5047.  
  5048.  
  5049.  
  5050.  
  5051.  
  5052.  
  5053.  
  5054.  
  5055.  
  5056.  
  5057.                                                            Page: 82
  5058.                                                      The Window BOSS
  5059.  
  5060.  
  5061.  
  5062.         9.46. wn_gulong -- input unsigned long integer in window
  5063.  
  5064.         USAGE
  5065.  
  5066.            wn_gulong(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
  5067.                     fwidth,low,high,ubuff,hlpmsg,errmsg)
  5068.           
  5069.               int        fun - function code (SET || XEQ)
  5070.               (WIFORM)   frm - form pointer  (actual || NFRM)
  5071.               int        fld - field # in form (actual || NFLD)
  5072.               (WINDOWPTR) wn - window pointer
  5073.               int        row - row in window where data input begins
  5074.               int        col - col in window where data input begins
  5075.               (char *) prmpt - field prompt (call with NSTR for none)
  5076.               unsigned atrib - field (not prompt) attributes 
  5077.               char      fill - field fill character
  5078.               (unsigned long*) value - 
  5079.                                pointer to long for return value (low-high)
  5080.               int     fwidth - width of mask 
  5081.                                (maximum # of digits is 10 with sign)
  5082.               unsigned long low -
  5083.                                minimum value (lower limit of value)
  5084.               unsigned long high -
  5085.                                maximum value (upper limit of value)
  5086.               (char *) ubuff - pointer to char array of fwidth+2 bytes 
  5087.               (char *)hlpmsg - pointer to help message 
  5088.                                (call with NSTR for none)
  5089.               (char *)errmsg - pointer to err message 
  5090.                                (call with NSTR for none)
  5091.           
  5092.         RETURNS:
  5093.           
  5094.               v via pointer.
  5095.           
  5096.               NULL if error, else the non zero value returned from 
  5097.               wn_input.
  5098.           
  5099.         CAUTIONS and ADDITIONAL NOTES:
  5100.           
  5101.             fun -  fun can only be SET for form setup, or XEQ for 
  5102.                    immediate execution.  When called with SET, valid 
  5103.                    arguments for both "frm" and "fld" must be specified.  
  5104.                    frm is the field pointer returned from wn_frmopn(), and 
  5105.                    fld is the field sequence number in the form for this 
  5106.                    field.  When called with XEQ frm must be NFRM and fld 
  5107.                    must be NFLD.
  5108.  
  5109.  
  5110.  
  5111.  
  5112.  
  5113.  
  5114.  
  5115.  
  5116.  
  5117.  
  5118.                                                            Page: 83
  5119.                                                      The Window BOSS
  5120.  
  5121.  
  5122.  
  5123.         wn_gulong - continued.  
  5124.  
  5125.  
  5126.  
  5127.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  5128.                    the data as it is entered.  Minumun size is fwidth+2.
  5129.           
  5130.                    On entry, the first byte of ubuff should be a null, 
  5131.                    otherwise wn_input assumes there is valid data there 
  5132.                    and will enter edit mode.  This can be handy if there 
  5133.                    is a need for prefilled, but editable fields.  In 
  5134.                    actual practice, wn_input uses this buffer for both 
  5135.                    initial character data entry and subsequent editing.
  5136.                    On return, ubuff contains the actual data entered in 
  5137.                    character format with fill and mask characters as 
  5138.                    spaces (e.g. "-24000").
  5139.           
  5140.             Calls wn_input to perform data entry.
  5141.           
  5142.             Data must satisfy validation checks for function to return.
  5143.           
  5144.             Calls wn_iemsg(errmsg) when validation fails.
  5145.  
  5146.  
  5147.  
  5148.  
  5149.  
  5150.  
  5151.  
  5152.  
  5153.  
  5154.  
  5155.  
  5156.  
  5157.  
  5158.  
  5159.  
  5160.  
  5161.  
  5162.  
  5163.  
  5164.  
  5165.  
  5166.  
  5167.  
  5168.  
  5169.  
  5170.  
  5171.  
  5172.  
  5173.  
  5174.  
  5175.  
  5176.  
  5177.  
  5178.  
  5179.                                                            Page: 84
  5180.                                                      The Window BOSS
  5181.  
  5182.  
  5183.  
  5184.         9.47. wn_gfloat -- input float in window
  5185.  
  5186.         USAGE
  5187.  
  5188.            wn_gfloat(fun,frm,fld,wn,row,col,prmpt,atrib,fill,v,
  5189.                      fwidth,ndec,low,high,ubuff,hlpmsg,errmsg)
  5190.           
  5191.               int        fun - function code (SET || XEQ)
  5192.               (WIFORM)   frm - form pointer  (actual || NFRM)
  5193.               int        fld - field # in form (actual || NFLD)
  5194.               (WINDOWPTR) wn - window pointer
  5195.               int        row - row in window where data input begins
  5196.               int        col - col in window where data input begins
  5197.               (char *) prmpt - field prompt (call with NSTR for none)
  5198.               unsigned atrib - field (not prompt) attributes 
  5199.               char      fill - field fill character
  5200.               (float  *)   v - pointer to float for return value
  5201.               int     fwidth - width of mask 
  5202.                                (maximum # of digits is 20 with sign)
  5203.               int       ndec - # of decimal places 
  5204.               float      low - minimum value (lower limit of value)
  5205.               float     high - maximum value (upper limit of value)
  5206.               (char *) ubuff - pointer to char array of fwidth+2 bytes 
  5207.               (char *)hlpmsg - pointer to help message 
  5208.                                (call with NSTR for none)
  5209.               (char *)errmsg - pointer to err message 
  5210.                                (call with NSTR for none)
  5211.           
  5212.         RETURNS:
  5213.           
  5214.               v via pointer.
  5215.           
  5216.               NULL if error, else the non zero value returned from 
  5217.               wn_input.
  5218.           
  5219.         NOTES:
  5220.           
  5221.             fun -  fun can only be SET for form setup, or XEQ for 
  5222.                    immediate execution.  When called with SET, valid 
  5223.                    arguments for both "frm" and "fld" must be specified.  
  5224.                    frm is the field pointer returned from wn_frmopn(), and 
  5225.                    fld is the field sequence number in the form for this 
  5226.                    field.  When called with XEQ frm must be NFRM and fld 
  5227.                    must be NFLD.
  5228.           
  5229.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  5230.                    the data as it is entered.  Minumum size is fwidth+2. 
  5231.           
  5232.  
  5233.  
  5234.  
  5235.  
  5236.  
  5237.  
  5238.  
  5239.  
  5240.                                                            Page: 85
  5241.                                                      The Window BOSS
  5242.  
  5243.  
  5244.  
  5245.         wn_gfloat - continued.
  5246.  
  5247.  
  5248.                     
  5249.                    On entry, the first byte of ubuff should be a null, 
  5250.                    otherwise wn_input assumes there is valid data there 
  5251.                    and will enter edit mode.  This can be handy if there 
  5252.                    is a need for prefilled, but editable fields.  In 
  5253.                    actual practice, wn_input uses this buffer for both 
  5254.                    initial character data entry and subsequent editing.
  5255.  
  5256.                    On return, ubuff contains the actual data entered in 
  5257.                    character format with fill and mask characters as 
  5258.                    spaces (e.g. "   -1240.20").
  5259.           
  5260.             Calls wn_input to perform data entry.
  5261.           
  5262.             Data must satisfy validation checks for function to return.
  5263.           
  5264.             Calls wn_iemsg(errmsg) when validation fails.
  5265.  
  5266.             Refer to "sample.c" for example(s) of usage.
  5267.  
  5268.             WN_GFLOAT.C is provided in source form.
  5269.  
  5270.  
  5271.  
  5272.  
  5273.  
  5274.  
  5275.  
  5276.  
  5277.  
  5278.  
  5279.  
  5280.  
  5281.  
  5282.  
  5283.  
  5284.  
  5285.  
  5286.  
  5287.  
  5288.  
  5289.  
  5290.  
  5291.  
  5292.  
  5293.  
  5294.  
  5295.  
  5296.  
  5297.  
  5298.  
  5299.  
  5300.  
  5301.                                                            Page: 86
  5302.                                                      The Window BOSS
  5303.  
  5304.  
  5305.  
  5306.         9.48. wn_gdouble -- input double in window
  5307.  
  5308.         USAGE
  5309.  
  5310.            wn_gdouble(fun,frm,fld,wn,row,col,prmpt,atrib,fill,v,
  5311.                      fwidth,ndec,low,high,ubuff,hlpmsg,errmsg)
  5312.           
  5313.               int        fun - function code (SET || XEQ)
  5314.               (WIFORM)   frm - form pointer  (actual || NFRM)
  5315.               int        fld - field # in form (actual || NFLD)
  5316.               (WINDOWPTR) wn - window pointer
  5317.               int        row - row in window where data input begins
  5318.               int        col - col in window where data input begins
  5319.               (char *) prmpt - field prompt (call with NSTR for none)
  5320.               unsigned atrib - field (not prompt) attributes 
  5321.               char      fill - field fill character
  5322.               (double *)   v - pointer to float for return value
  5323.               int     fwidth - width of mask 
  5324.                                (maximum # of digits is 20 with sign)
  5325.               int       ndec - # of decimal places 
  5326.               double     low - minimum value (lower limit of value)
  5327.               double    high - maximum value (upper limit of value)
  5328.               (char *) ubuff - pointer to char array of fwidth+2 bytes 
  5329.               (char *)hlpmsg - pointer to help message 
  5330.                                (call with NSTR for none)
  5331.               (char *)errmsg - pointer to err message 
  5332.                                (call with NSTR for none)
  5333.           
  5334.         RETURNS:
  5335.           
  5336.               v via pointer.
  5337.           
  5338.               NULL if error, else the non zero value returned from 
  5339.               wn_input.
  5340.           
  5341.         CAUTIONS AND ADDITIONAL NOTES:
  5342.           
  5343.             fun -  fun can only be SET for form setup, or XEQ for 
  5344.                    immediate execution.  When called with SET, valid 
  5345.                    arguments for both "frm" and "fld" must be specified.  
  5346.                    frm is the field pointer returned from wn_frmopn(), and 
  5347.                    fld is the field sequence number in the form for this 
  5348.                    field.  When called with XEQ frm must be NFRM and fld 
  5349.                    must be NFLD.
  5350.           
  5351.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  5352.                    the data as it is entered.  Minumum size is fwidth+2. 
  5353.           
  5354.  
  5355.  
  5356.  
  5357.  
  5358.  
  5359.  
  5360.  
  5361.  
  5362.                                                            Page: 87
  5363.                                                      The Window BOSS
  5364.  
  5365.  
  5366.  
  5367.         wn_gdouble - continued.
  5368.  
  5369.  
  5370.                     
  5371.                    On entry, the first byte of ubuff should be a null, 
  5372.                    otherwise wn_input assumes there is valid data there 
  5373.                    and will enter edit mode.  This can be handy if there 
  5374.                    is a need for prefilled, but editable fields.  In 
  5375.                    actual practice, wn_input uses this buffer for both 
  5376.                    initial character data entry and subsequent editing.
  5377.  
  5378.                    On return, ubuff contains the actual data entered in 
  5379.                    character format with fill and mask characters as 
  5380.                    spaces (e.g. "   -1240.20").
  5381.           
  5382.             Calls wn_input to perform data entry.
  5383.           
  5384.             Data must satisfy validation checks for function to return.
  5385.           
  5386.             Calls wn_iemsg(errmsg) when validation fails.
  5387.  
  5388.  
  5389.  
  5390.  
  5391.  
  5392.  
  5393.  
  5394.  
  5395.  
  5396.  
  5397.  
  5398.  
  5399.  
  5400.  
  5401.  
  5402.  
  5403.  
  5404.  
  5405.  
  5406.  
  5407.  
  5408.  
  5409.  
  5410.  
  5411.  
  5412.  
  5413.  
  5414.  
  5415.  
  5416.  
  5417.  
  5418.  
  5419.  
  5420.  
  5421.  
  5422.  
  5423.                                                            Page: 88
  5424.                                                      The Window BOSS
  5425.  
  5426.  
  5427.  
  5428.         9.49. wn_gbool -- input logical in window
  5429.  
  5430.         USAGE
  5431.  
  5432.            wn_gbool(fun,frm,fld,wn,row,col,prmpt,atrib,fill,value,
  5433.                     ubuff,hlpmsg,errmsg)
  5434.           
  5435.               int        fun - function code (SET || XEQ)
  5436.               (WIFORM)   frm - form pointer  (actual || NFRM)
  5437.               int        fld - field # in form (actual || NFLD)
  5438.               (WINDOWPTR) wn - window pointer
  5439.               int        row - row in window where data input begins
  5440.               int        col - col in window where data input begins
  5441.               (char *) prmpt - field prompt (call with NSTR for none)
  5442.               unsigned atrib - field (not prompt) attributes 
  5443.               char      fill - field fill character
  5444.               (int *)  value - pointer to int for value (0=FALSE, 1=TRUE)
  5445.               (char *) ubuff - pointer to char array of 3 bytes 
  5446.               (char *)hlpmsg - pointer to help message 
  5447.                                (call with NSTR for none)
  5448.               (char *)errmsg - pointer to err message 
  5449.                                (call with NSTR for none)
  5450.           
  5451.         RETURNS:
  5452.           
  5453.               value via pointer (0=FALSE, 1=TRUE)
  5454.           
  5455.               NULL if error, else the non zero value returned from 
  5456.               wn_input.
  5457.           
  5458.         CAUTIONS and ADDITIONAL NOTES:
  5459.           
  5460.             fun -  fun can only be SET for form setup, or XEQ for 
  5461.                    immediate execution.  When called with SET, valid 
  5462.                    arguments for both "frm" and "fld" must be specified.  
  5463.                    frm is the field pointer returned from wn_frmopn(), and 
  5464.                    fld is the field sequence number in the form for this 
  5465.                    field.  When called with XEQ frm must be NFRM and fld 
  5466.                    must be NFLD.
  5467.           
  5468.             ubuff - Editing buffer.  Must be of sufficient size to hold 
  5469.                    the data as it is entered.  Minumum size is 3 bytes.
  5470.           
  5471.                    On entry, the first byte of ubuff should be a null, 
  5472.                    otherwise wn_input assumes there is valid data there 
  5473.                    and will enter edit mode.  This can be handy if there 
  5474.                    is a need for prefilled, but editable fields.  In 
  5475.                    actual practice, wn_input uses this buffer for both 
  5476.                    initial character data entry and subsequent editing.
  5477.  
  5478.  
  5479.  
  5480.  
  5481.  
  5482.  
  5483.  
  5484.                                                            Page: 89
  5485.                                                      The Window BOSS
  5486.  
  5487.  
  5488.  
  5489.         wn_gbool - continued.
  5490.  
  5491.  
  5492.  
  5493.                    On return, ubuff contains the actual data entered in 
  5494.                    character format with fill and mask characters as 
  5495.                    spaces (e.g. "T").
  5496.           
  5497.             Calls wn_input to perform data entry.
  5498.           
  5499.             User MUST enter T,F,Y, or N.
  5500.           
  5501.             Data must satisfy validation checks for function to return.
  5502.           
  5503.             Calls wn_iemsg(errmsg) when validation fails.
  5504.           
  5505.             Refer to "sample.c" for example(s) of usage.
  5506.  
  5507.  
  5508.  
  5509.  
  5510.  
  5511.  
  5512.  
  5513.  
  5514.  
  5515.  
  5516.  
  5517.  
  5518.  
  5519.  
  5520.  
  5521.  
  5522.  
  5523.  
  5524.  
  5525.  
  5526.  
  5527.  
  5528.  
  5529.  
  5530.  
  5531.  
  5532.  
  5533.  
  5534.  
  5535.  
  5536.  
  5537.  
  5538.  
  5539.  
  5540.  
  5541.  
  5542.  
  5543.  
  5544.  
  5545.                                                            Page: 90
  5546.                                                      The Window BOSS
  5547.  
  5548.  
  5549.  
  5550.         9.50. wn_dtext -- display text on input form
  5551.  
  5552.         USAGE
  5553.  
  5554.            wn_dtext(fun,frm,fld,wn,row,col,prmpt)
  5555.           
  5556.               int        fun - function code (SET || XEQ)
  5557.               (WIFORM)   frm - form pointer  (actual || NFRM)
  5558.               int        fld - field # in form (actual || NFLD)
  5559.               (WINDOWPTR) wn - window pointer
  5560.               int        row - row in window where data input begins
  5561.               int        col - col in window where data input begins
  5562.               (char *) prmpt - field prompt (call with NSTR for none)
  5563.           
  5564.         RETURNS:
  5565.           
  5566.               TRUE if fun==SET 
  5567.           
  5568.                or
  5569.           
  5570.               Normal return value of wn_puts if fun==XEQ
  5571.           
  5572.         CAUTIONS and ADDITIONAL NOTES:
  5573.           
  5574.             fun -  fun can only be SET for form setup, or XEQ for 
  5575.                    immediate execution.  When called with SET, valid 
  5576.                    arguments for both "frm" and "fld" must be specified.  
  5577.                    frm is the field pointer returned from wn_frmopn(), and 
  5578.                    fld is the field sequence number in the form for this 
  5579.                    field.  When called with XEQ frm must be NFRM and fld 
  5580.                    must be NFLD.
  5581.  
  5582.             Refer to "sample.c" for example(s) of usage.
  5583.  
  5584.  
  5585.  
  5586.  
  5587.  
  5588.  
  5589.  
  5590.  
  5591.  
  5592.  
  5593.  
  5594.  
  5595.  
  5596.  
  5597.  
  5598.  
  5599.  
  5600.  
  5601.  
  5602.  
  5603.  
  5604.  
  5605.  
  5606.                                                            Page: 91
  5607.                                                      The Window BOSS
  5608.  
  5609.  
  5610.  
  5611.         9.51. wn_iemsg -- display input error message
  5612.  
  5613.         USAGE
  5614.  
  5615.            wn_iemsg(msg)
  5616.           
  5617.               (char *)   msg - pointer to message to be displayed.
  5618.           
  5619.         RETURNS:
  5620.           
  5621.               NULL if error, else TRUE
  5622.           
  5623.         CAUTIONS and ADDITIONAL NOTES:
  5624.           
  5625.             This routine should be modified or replaced with code to suit 
  5626.             your application's specific needs.  It hooks to wn_g???? 
  5627.             such that whenever the field validation fails wn_g???? calls 
  5628.             wn_iemsg to display an error message for the field in 
  5629.             question.  The hooks in wn_g????? are of the form:
  5630.           
  5631.                 if(validation failed) wn_iemsg(msg);
  5632.           
  5633.             This routine displays a single line of text on the 25th line 
  5634.             and waits for a key to be struck before returning to accept 
  5635.             new data for the field in question.
  5636.           
  5637.             The error message can be a maximum of 80 characters, and must 
  5638.             not contain any formatting directives (\n\t...).
  5639.           
  5640.             Some wn_g???? functions (i.e. wn_gtext) have no provision to 
  5641.             validate data and therefore never attempt to call this 
  5642.             routine.
  5643.  
  5644.             WN_IEMSG.C is provided in source form.
  5645.  
  5646.  
  5647.  
  5648.  
  5649.  
  5650.  
  5651.  
  5652.  
  5653.  
  5654.  
  5655.  
  5656.  
  5657.  
  5658.  
  5659.  
  5660.  
  5661.  
  5662.  
  5663.  
  5664.  
  5665.  
  5666.  
  5667.                                                            Page: 92
  5668.                                                      The Window BOSS
  5669.  
  5670.  
  5671.  
  5672.         9.52. wn_ihmsg -- display input help message
  5673.           
  5674.         USAGE
  5675.           
  5676.            wn_ihmsg(msg)
  5677.           
  5678.               (char *)   msg - pointer to message to be displayed.
  5679.           
  5680.         RETURNS:
  5681.           
  5682.               NULL if error, else TRUE
  5683.           
  5684.         CAUTIONS and ADDITIONAL NOTES:
  5685.           
  5686.             This routine should be modified or replaced with code to suit 
  5687.             your application's specific needs.  It hooks to wn_input 
  5688.             such that whenever the F1 key is pressed wn_input calls 
  5689.             wn_ihmsg to display a help message for the field in question.  
  5690.             The hooks in wn_input are of the form:
  5691.           
  5692.                 if(key_struck == F1) wn_ihmsg(msg);
  5693.           
  5694.             This routine displays a single line of help on the 25th line 
  5695.             and waits for a key to be struck before returning.
  5696.           
  5697.             The help message can be a maximum of 80 characters, and must 
  5698.             not contain any formatting directives (\n\t...).
  5699.  
  5700.             WN_IHMSG is provided in source form.
  5701.  
  5702.  
  5703.  
  5704.  
  5705.  
  5706.  
  5707.  
  5708.  
  5709.  
  5710.  
  5711.  
  5712.  
  5713.  
  5714.  
  5715.  
  5716.  
  5717.  
  5718.  
  5719.  
  5720.  
  5721.  
  5722.  
  5723.  
  5724.  
  5725.  
  5726.  
  5727.  
  5728.                                                            Page: 93
  5729.                                                      The Window BOSS
  5730.  
  5731.  
  5732.  
  5733.         9.53. wn_sleftj -- (string) left justify 
  5734.  
  5735.         USAGE
  5736.  
  5737.              wn_sleftj(str)
  5738.  
  5739.                   (char *) str - string to left justify
  5740.           
  5741.         RETURNS:
  5742.  
  5743.              Pointer to str.
  5744.           
  5745.         CAUTIONS and ADDITIONAL NOTES:
  5746.  
  5747.              The string str is left justified in place. 
  5748.  
  5749.              This funtion should not be used with literal character 
  5750.              strings (e.g. wn_sleft(" left justify this");).
  5751.  
  5752.              Leading white space is converted to trailing white space.
  5753.  
  5754.  
  5755.         9.54. wn_srightj -- (string) right justify 
  5756.  
  5757.         USAGE
  5758.  
  5759.              wn_srightj(str)
  5760.  
  5761.                   (char *) str - string to right justify.
  5762.  
  5763.         RETURNS:
  5764.  
  5765.              Pointer to str.
  5766.  
  5767.         CAUTIONS and ADDITIONAL NOTES:
  5768.  
  5769.              The string str is right justified in place.  
  5770.  
  5771.              This funtion should not be used with literal character 
  5772.              strings (e.g. wn_srightj("right justify this   ");).
  5773.  
  5774.              Trailing white space is converted to leading white space.
  5775.  
  5776.  
  5777.  
  5778.  
  5779.  
  5780.  
  5781.  
  5782.  
  5783.  
  5784.  
  5785.  
  5786.  
  5787.  
  5788.  
  5789.                                                            Page: 94
  5790.                                                      The Window BOSS
  5791.  
  5792.  
  5793.  
  5794.         9.55. wn_scenter -- (string) center 
  5795.  
  5796.         USAGE
  5797.  
  5798.              wn_scenter(sr,tr,w)
  5799.  
  5800.                   (char *) sr - the string to center - source
  5801.                   (char *) tr - the centered string  - target
  5802.                                 tr contains the results of centering
  5803.                   int w       - desired width of centered string 
  5804.           
  5805.         RETURNS:
  5806.  
  5807.              Pointer to tr.
  5808.           
  5809.         CAUTIONS and ADDITIONAL NOTES:
  5810.  
  5811.              tr must be a pointer to a character array of at least
  5812.              w+1 in size.
  5813.  
  5814.              The source string pointed to by sr is not altered in any 
  5815.              way.
  5816.  
  5817.              Both leading and trailing white space of the source string 
  5818.              are considered part of the string to be centered.
  5819.                                       
  5820.                                       Desired Width (W)
  5821.                         |------------------------------------------|
  5822.  
  5823.                   source "this is a simple example"
  5824.                   target|         this is a simple example         |
  5825.  
  5826.                   source "        this is an example toooo"
  5827.                   target|             this is an example toooo     |
  5828.  
  5829.              This fuction is intended to deal with strings that do not 
  5830.              have leading or trailing white space.  WN_SDELSPC can be 
  5831.              called to prepare the string for centering.
  5832.  
  5833.  
  5834.  
  5835.  
  5836.  
  5837.  
  5838.  
  5839.  
  5840.  
  5841.  
  5842.  
  5843.  
  5844.  
  5845.  
  5846.  
  5847.  
  5848.  
  5849.  
  5850.                                                            Page: 95
  5851.                                                      The Window BOSS
  5852.  
  5853.  
  5854.  
  5855.         9.56. wn_sdelspc -- (string) delete leading/trailing spaces
  5856.  
  5857.         USAGE
  5858.  
  5859.              wn_sdelspc(str, code)
  5860.  
  5861.                   char *str - string to be treated
  5862.                   int code  - operation code:
  5863.                                 1 = delete leading
  5864.                                 2 = delete trailing
  5865.                                 3 = delete both
  5866.           
  5867.         RETURNS:
  5868.  
  5869.              Pointer to str.
  5870.  
  5871.         CAUTIONS and ADDITIONAL NOTES:
  5872.  
  5873.              All operations are performed in place.
  5874.  
  5875.              This funtion should not be used with literal character 
  5876.              strings (e.g. wn_sdelspc(" mumble fratz  ", 3);).
  5877.  
  5878.  
  5879.         9.57. wn_strndx -- (string) return index of s2 in s1
  5880.  
  5881.         USAGE
  5882.  
  5883.              wn_strndx(s1,s2,off)
  5884.  
  5885.                   (char *) s1 - pointer to string s1
  5886.                   (char *) s2 - pointer to string s2
  5887.                   int off     - s1 offset for search start
  5888.                     
  5889.         RETURNS:
  5890.  
  5891.              The index (aka subscript, aka offset) of where s2 begins in 
  5892.              s1, or (-1) if s2 could not be found in s1.
  5893.  
  5894.  
  5895.         CAUTIONS and ADDITIONAL NOTES:
  5896.  
  5897.              A value for "off" must be provided. 
  5898.  
  5899.  
  5900.  
  5901.  
  5902.  
  5903.  
  5904.  
  5905.  
  5906.  
  5907.  
  5908.  
  5909.  
  5910.  
  5911.                                                            Page: 96
  5912.                                                      The Window BOSS
  5913.  
  5914.  
  5915.  
  5916.         9.58. mo_reset -- reset/init mouse
  5917.  
  5918.         USAGE
  5919.  
  5920.              ms = (MOUSEPTR) mo_reset()
  5921.              MOUSEPTR ms;
  5922.  
  5923.                   ms - mouse handle 
  5924.  
  5925.              mo_reset() must be the 1st mouse function called.
  5926.  
  5927.              Low level and applications level interface function.
  5928.  
  5929.         RETURNS
  5930.  
  5931.              mo = mouse handle or MOLPTR (null) if error
  5932.  
  5933.         CAUTIONS and ADDITIONAL NOTES
  5934.  
  5935.              Any program that uses a mouse must first initialize it in 
  5936.              order to avoid dealing with the mouse in an unknown state.  
  5937.              This function clears the mouse status to a "power on" state, 
  5938.              places the mouse's cursor in the center of the screen 
  5939.              (although hidden) and sets the mouse's active region to the 
  5940.              full screen.
  5941.  
  5942.              Requires "windows.h" to be "#include"d.
  5943.  
  5944.              MOUSEPTR is defined in "windows.h"     
  5945.  
  5946.              Example:
  5947.  
  5948.                   #include "windows.h"
  5949.                   main()
  5950.                   {
  5951.                   MOUSEPTR ms;
  5952.                        ms=mo_reset();           /* init mouse */
  5953.                        if(ms) {
  5954.                             .....               /* do other things */
  5955.                             exit(0);            /* finito */
  5956.                        }
  5957.                        else {
  5958.                             ... no mouse
  5959.                        }
  5960.                   }
  5961.                   /* End */
  5962.  
  5963.  
  5964.  
  5965.  
  5966.  
  5967.  
  5968.  
  5969.  
  5970.  
  5971.  
  5972.                                                            Page: 97
  5973.                                                      The Window BOSS
  5974.  
  5975.  
  5976.  
  5977.         9.59. mo_show -- show mouse
  5978.  
  5979.         USAGE
  5980.  
  5981.              mo_show(ms)
  5982.              MOUSEPTR ms;
  5983.  
  5984.                   ms - mouse handle
  5985.  
  5986.              Display (show, unhide) the mouse cursor.  
  5987.              
  5988.              Low level and applications level interface function.
  5989.  
  5990.         RETURNS
  5991.  
  5992.              Nothing.     
  5993.  
  5994.         CAUTIONS and ADDITIONAL NOTES
  5995.  
  5996.              Example:
  5997.  
  5998.                   #include "windows.h"
  5999.                   main()
  6000.                   {
  6001.                   MOUSEPTR ms;
  6002.                        ms=mo_reset();           /* init mouse */
  6003.                        if(ms) {
  6004.                             mo_show(ms);        /* show mouse */
  6005.                             .....               /* do other things */
  6006.                             exit(0);            /* finito */
  6007.                        }
  6008.                        else {
  6009.                             ... no mouse
  6010.                        }
  6011.                   }
  6012.                   /* End */
  6013.  
  6014.              Failure to call mo_show() will cause the mouse to never be 
  6015.              displayed.  mo_show() is usually called after mo_reset().
  6016.  
  6017.  
  6018.  
  6019.  
  6020.  
  6021.  
  6022.  
  6023.  
  6024.  
  6025.  
  6026.  
  6027.  
  6028.  
  6029.  
  6030.  
  6031.  
  6032.  
  6033.                                                            Page: 98
  6034.                                                      The Window BOSS
  6035.  
  6036.  
  6037.  
  6038.         9.60. mo_hide -- hide mouse
  6039.  
  6040.         USAGE
  6041.  
  6042.              mo_hide(ms)
  6043.              MOUSEPTR ms;
  6044.  
  6045.                   ms - mouse handle
  6046.  
  6047.              Hide (unshow, make invisible) the mouse cursor.  
  6048.  
  6049.              Low level and applications level interface function.
  6050.  
  6051.         RETURNS
  6052.  
  6053.              Nothing.
  6054.  
  6055.         CAUTIONS and ADDITIONAL NOTES
  6056.  
  6057.              The only way to display the mouse cursor after it is hidden 
  6058.              is by calling mo_show().
  6059.  
  6060.              Example:
  6061.  
  6062.                   #include "windows.h"
  6063.                   main()
  6064.                   {
  6065.                   MOUSEPTR ms;
  6066.                        ms=mo_reset();           /* init mouse */
  6067.                        if(ms) {
  6068.                             mo_show(ms);        /* show mouse */
  6069.                             v_getch();          /* wait for key hit */
  6070.                             mo_hide(ms);        /* hide mouse */
  6071.                             exit(0);            /* finito */
  6072.                        }
  6073.                        else {
  6074.                             ... no mouse
  6075.                        }
  6076.                   }
  6077.                   /* End */
  6078.  
  6079.  
  6080.  
  6081.  
  6082.  
  6083.  
  6084.  
  6085.  
  6086.  
  6087.  
  6088.  
  6089.  
  6090.  
  6091.  
  6092.  
  6093.  
  6094.                                                            Page: 99
  6095.                                                      The Window BOSS
  6096.  
  6097.  
  6098.  
  6099.         9.61. mo_pos -- get mouse pixel position & status
  6100.  
  6101.         USAGE
  6102.  
  6103.              mo_pos(ms)
  6104.              MOUSEPTR ms;
  6105.  
  6106.                   ms - mouse handle
  6107.  
  6108.              This function updates the mouse control block with current 
  6109.              mouse status information - physical location and button 
  6110.              status.  This information is provided in real time and in 
  6111.              the mouse's 640 x 200 pixel array corrdinate system.
  6112.  
  6113.              Low level interface function.
  6114.  
  6115.         RETURNS
  6116.  
  6117.              Nothing. 
  6118.  
  6119.              Updates - Members of the mouse control block:
  6120.  
  6121.                ms->bstat - bit 0 set if left button is CURRENTLY down 
  6122.                            bit 1 set if right button is CURRENTLY down
  6123.                            bit 2 set if center button is CURRENTLY down
  6124.                                       
  6125.                ms->row   - mouse pixel row location 
  6126.                ms->col   - mouse pixel col location
  6127.  
  6128.         CAUTIONS and ADDITIONAL NOTES
  6129.  
  6130.              All information is reported in real time.  If the mouse is 
  6131.              in the process of being moved, the information returned may 
  6132.              not be indicative of the final destination. 
  6133.  
  6134.              This funtion is typically used in graphics mode (which The 
  6135.              Window BOSS does not support).  It is handy for "etch-a-
  6136.              sketch" type pixel drawing programs.  
  6137.  
  6138.              Making infrequent calls to this routine can cause your 
  6139.              program to miss button clicks. 
  6140.  
  6141.              Text (80x25) row and column coordinates can be determined by 
  6142.              dividing m->row and m->col by 8.
  6143.  
  6144.              The recommended way to obtain accurate information in a more 
  6145.              useful format is by using mo_wait in conjunction with 
  6146.              mo_rcpos.
  6147.  
  6148.  
  6149.              Also see "mo_rcpos", "mo_wait".
  6150.  
  6151.  
  6152.  
  6153.  
  6154.  
  6155.                                                            Page: 100
  6156.                                                      The Window BOSS
  6157.  
  6158.  
  6159.  
  6160.         9.62. mo_move -- move mouse pixel cursor
  6161.  
  6162.         USAGE
  6163.  
  6164.              mo_move(ms, row, col)
  6165.              MOUSEPTR ms;
  6166.              int row,col;
  6167.  
  6168.                   ms -  mouse handle
  6169.                   row - new pixel row value 
  6170.                   col - new pixel col value
  6171.  
  6172.              This function moves the mouse to a new physical location in 
  6173.              the mouse's 640 x 200 pixel array corrdinate system.
  6174.  
  6175.              Low level interface function.
  6176.  
  6177.         RETURNS
  6178.  
  6179.              Nothing.
  6180.  
  6181.         CAUTIONS and ADDITIONAL NOTES
  6182.  
  6183.              Pixel row and column coordinates can be determined by 
  6184.              multiplying the text (80x25) coordinates by 8.  
  6185.  
  6186.              Also see "mo_locate".
  6187.  
  6188.  
  6189.  
  6190.  
  6191.  
  6192.  
  6193.  
  6194.  
  6195.  
  6196.  
  6197.  
  6198.  
  6199.  
  6200.  
  6201.  
  6202.  
  6203.  
  6204.  
  6205.  
  6206.  
  6207.  
  6208.  
  6209.  
  6210.  
  6211.  
  6212.  
  6213.  
  6214.  
  6215.  
  6216.                                                            Page: 101
  6217.                                                      The Window BOSS
  6218.  
  6219.  
  6220.  
  6221.         9.63. mo_pbinfo -- get pressed mouse botton status
  6222.  
  6223.         USAGE
  6224.  
  6225.              mo_pbinfo(ms,button)
  6226.              MOUSEPTR ms;
  6227.              int button;
  6228.  
  6229.                   ms     -  mouse handle
  6230.                   button -  button of interest (MO_LEFT or MO_RIGHT)
  6231.  
  6232.              Low level interface function.
  6233.  
  6234.         RETURNS
  6235.  
  6236.              Nothing. 
  6237.  
  6238.              Updates - Members of the mouse control block:
  6239.  
  6240.                ms->bstat  - bit 0 set if left button is CURRENTLY down 
  6241.                             bit 1 set if right button is CURRENTLY down
  6242.                             bit 2 set if center button is CURRENTLY down
  6243.                ms->nclick - number of times the requseted button has 
  6244.                             been pressed since last call.
  6245.                ms->row    - mouse pixel row location of last press
  6246.                ms->col    - mouse pixel col location of last press
  6247.  
  6248.         CAUTIONS and ADDITIONAL NOTES
  6249.  
  6250.              The mouse device driver is a pretty smart critter.  It keeps 
  6251.              track of a number of things, one of them being the number of 
  6252.              times a particular button has been pressed or released since 
  6253.              the last time someone has asked about it.  This function 
  6254.              returns pressed button information about a specific button 
  6255.              (MO_LEFT or MO_RIGHT), and it also returns the real time 
  6256.              button status in the same format as mo_pos().  
  6257.  
  6258.              The ms->row and ms->column locations in the mouse control 
  6259.              block are from the last press of the specified button.
  6260.  
  6261.              This function, like mo_pos, provides limited value for most 
  6262.              applications programs.  A better choice is mo_rbinfo 
  6263.              (released button information and status), since the mouse 
  6264.              device driver waits for the user to RELEASE the specified 
  6265.              button before it updates the internal counters.
  6266.  
  6267.              MO_LEFT and MO_RIGHT are defined in "windows.h"
  6268.  
  6269.              Calling mo_pbinfo clears the mouse's pressed button history 
  6270.              counters.
  6271.  
  6272.              Also see "mo_press", "mo_release", "mo_rbinfo"
  6273.  
  6274.  
  6275.  
  6276.  
  6277.                                                            Page: 102
  6278.                                                      The Window BOSS
  6279.  
  6280.  
  6281.  
  6282.         9.64. mo_rbinfo -- get released mouse button status
  6283.  
  6284.              mo_rbinfo(ms,button)
  6285.              MOUSEPTR ms;
  6286.              int button;
  6287.  
  6288.                   ms     -  mouse handle
  6289.                   button -  button of interest (MO_LEFT or MO_RIGHT)
  6290.  
  6291.              Low level interface function.
  6292.  
  6293.         RETURNS
  6294.  
  6295.              Nothing. 
  6296.  
  6297.              Updates - Members of the mouse control block:
  6298.  
  6299.                ms->bstat  - bit 0 set if left has been released 
  6300.                             bit 1 set if right button has been released
  6301.                             bit 2 set if center button "   "    "
  6302.                ms->nclick - number of times the requseted button has 
  6303.                             been pressed and released since last call.
  6304.                ms->row    - mouse pixel row location of last release
  6305.                ms->col    - mouse pixel col location of last release 
  6306.  
  6307.         CAUTIONS and ADDITIONAL NOTES
  6308.  
  6309.              The mouse device driver is a pretty smart critter.  It keeps 
  6310.              track of a number of things, one of them being the number of 
  6311.              times a particular button has been pressed or released since 
  6312.              the last time someone has asked about it.  This function 
  6313.              returns released button information about a specific button 
  6314.              (MO_LEFT or MO_RIGHT), and it also returns the real time 
  6315.              button status in the same format as mo_pos().  
  6316.  
  6317.              The ms->row and ms->column locations in the mouse control 
  6318.              block are from the last button release  of the specified 
  6319.              button.
  6320.  
  6321.              The mouse device driver waits for the user to RELEASE the 
  6322.              specified button before it updates the internal counters.
  6323.  
  6324.              MO_LEFT and MO_RIGHT are defined in "windows.h"
  6325.  
  6326.              Calling mo_rbinfo clears the mouse's pressed button history 
  6327.              counters.
  6328.  
  6329.              Also see "mo_release", "mo_press", "mo_pbinfo"
  6330.  
  6331.  
  6332.  
  6333.  
  6334.  
  6335.  
  6336.  
  6337.  
  6338.                                                            Page: 103
  6339.                                                      The Window BOSS
  6340.  
  6341.  
  6342.  
  6343.         9.65. mo_clim -- set mouse min/max pixel column limits
  6344.  
  6345.         USAGE
  6346.  
  6347.              mo_clim(ms,min,max)
  6348.              MOUSEPTR ms;
  6349.              int min, mix;
  6350.  
  6351.                   ms   - mouse handle
  6352.                   min  - column minimum in pixels (0 to 639)
  6353.                   max  - column maximum in pixels (0 to 639)
  6354.  
  6355.              mo_clim and mo_rlim limit the operational area of the mouse.  
  6356.              Together they define the mouse's hot area, or if you prefer, 
  6357.              they establish a fence/cage around the mouse. 
  6358.  
  6359.              Low level interface function.
  6360.  
  6361.         RETURNS
  6362.  
  6363.              Nothing.
  6364.  
  6365.         CAUTIONS and ADDITIONAL NOTES
  6366.  
  6367.              min and max are not range checked, 0 is on the left.
  6368.  
  6369.              Also see "mo_reigon"
  6370.  
  6371.         9.66. mo_rlim -- set mouse min/max pixel row limits
  6372.  
  6373.         USAGE
  6374.  
  6375.              mo_clim(ms,min,max)
  6376.              MOUSEPTR ms;
  6377.              int min, mix;
  6378.  
  6379.                   ms   - mouse handle
  6380.                   min  - row minimum in pixels (0 to 199)
  6381.                   max  - row maximum in pixels (0 to 199)
  6382.  
  6383.              mo_clim and mo_rlim limit the operational area of the mouse.  
  6384.              Together they define the mouse's hot area, or if you prefer, 
  6385.              they establish a fence/cage around the mouse. 
  6386.  
  6387.              Low level interface function.
  6388.  
  6389.         RETURNS
  6390.  
  6391.              Nothing.
  6392.  
  6393.         CAUTIONS and ADDITIONAL NOTES
  6394.  
  6395.              min and max are not range checked, 0 is at the top.
  6396.  
  6397.  
  6398.  
  6399.                                                            Page: 104
  6400.                                                      The Window BOSS
  6401.  
  6402.  
  6403.  
  6404.         9.67. mo_sgcursor -- set mouse graphics cursor
  6405.  
  6406.         USAGE
  6407.  
  6408.              mo_sgcursor(ms, hhot, vhot, seg, off)
  6409.              MOUSEPTR ms;
  6410.              int hhot, vhot;
  6411.              unsigned int seg, off;
  6412.  
  6413.                   ms         - mouse handle
  6414.                   hhot, vhot - X & Y relative coordinates of hot spot
  6415.                   seg, off   - segment and offset of mask set
  6416.  
  6417.              Low level interface function.
  6418.  
  6419.         RETURNS
  6420.  
  6421.              Nothing.
  6422.  
  6423.         CAUTIONS and ADDITIONAL NOTES
  6424.  
  6425.              This is an unsupported function that is useful in graphics 
  6426.              mode only.  
  6427.  
  6428.              This function is not to be used in conjunction with The 
  6429.              Window BOSS or Data Clerk.
  6430.  
  6431.              Refer to the Microsoft and/or Logitech API manuals for a 
  6432.              complete description of mouse function 9.
  6433.  
  6434.              Use "mo_scursor" or "mo_setptr" to set the mouse cursor.
  6435.  
  6436.  
  6437.  
  6438.  
  6439.  
  6440.  
  6441.  
  6442.  
  6443.  
  6444.  
  6445.  
  6446.  
  6447.  
  6448.  
  6449.  
  6450.  
  6451.  
  6452.  
  6453.  
  6454.  
  6455.  
  6456.  
  6457.  
  6458.  
  6459.  
  6460.                                                            Page: 105
  6461.                                                      The Window BOSS
  6462.  
  6463.  
  6464.  
  6465.         9.68. mo_scursor -- set mouse cursor
  6466.  
  6467.         USAGE
  6468.  
  6469.              mo_scursor(ms, type, start, stop)
  6470.              MOUSEPTR ms;
  6471.              int type, start, stop;
  6472.  
  6473.                   ms    - mouse pointer
  6474.                   type  - cursor type: 
  6475.                             MO_HDW for hardware
  6476.                             MO_SFT for software
  6477.                   start - start scan line
  6478.                   stop  - stop scan line
  6479.  
  6480.              When using a mouse, you can choose between two types of text 
  6481.              cursors, which are hardware or software.  The hardware 
  6482.              (MO_HDW) cursor puts the video adapters text cursor under 
  6483.              control of the mouse.  This results in a single cursor 
  6484.              appearing on the screen for both the mouse and text.  The 
  6485.              software cursor (MO_SFT) allows two cursors to appear on the 
  6486.              screen, the normal text cursor and a mouse cursor that can 
  6487.              take on a user defined shape and attribute.  The software 
  6488.              cursor is the default and is a simple full-cell inverse 
  6489.              video cursor.
  6490.  
  6491.              Using the hardware cursor type MO_HDW:
  6492.  
  6493.                   start - start scan line (usually 0)
  6494.                   stop  - stop scan line:
  6495.                             monochrome max = 12
  6496.                             non mon    max =  7
  6497.  
  6498.              Using the software cursor type MO_SFT:
  6499.  
  6500.                Option 1 (user defined):
  6501.                   
  6502.                   start - 0x00 
  6503.                   stop  - display attributes in upper 8 bits.
  6504.                           ascii character to be used as cursor in lower 8 
  6505.                           bits.
  6506.  
  6507.                   For example, to set the software cursor to a white 
  6508.                   happy face on a black background:
  6509.  
  6510.                        mo_scursor(ms, MO_SFT, 0x00, 0x0703);     
  6511.  
  6512.  
  6513.                                                      continued...    
  6514.  
  6515.  
  6516.  
  6517.  
  6518.  
  6519.  
  6520.  
  6521.                                                            Page: 106
  6522.                                                      The Window BOSS
  6523.  
  6524.  
  6525.  
  6526.         mo_scursor - continued.
  6527.  
  6528.  
  6529.  
  6530.                Option 2 (see through rectangle):
  6531.  
  6532.                   start - 0x77ff
  6533.                   stop  - 0x00
  6534.  
  6535.                   For example, to set the software cursor to a see 
  6536.                   through block:
  6537.  
  6538.                        mo_scursor(ms, MO_SOFT, 0x77ff, 7700);     
  6539.  
  6540.              Low level interface function.
  6541.  
  6542.         RETURNS
  6543.  
  6544.              Nothing.
  6545.  
  6546.         CAUTIONS and ADDITIONAL NOTES
  6547.  
  6548.              See also "mo_setptr".
  6549.  
  6550.  
  6551.  
  6552.  
  6553.  
  6554.  
  6555.  
  6556.  
  6557.  
  6558.  
  6559.  
  6560.  
  6561.  
  6562.  
  6563.  
  6564.  
  6565.  
  6566.  
  6567.  
  6568.  
  6569.  
  6570.  
  6571.  
  6572.  
  6573.  
  6574.  
  6575.  
  6576.  
  6577.  
  6578.  
  6579.  
  6580.  
  6581.  
  6582.                                                            Page: 107
  6583.                                                      The Window BOSS
  6584.  
  6585.  
  6586.  
  6587.         9.69. mo_motion  -- get mouse motion counters
  6588.  
  6589.         USAGE
  6590.  
  6591.              mo_motion(ms)
  6592.              MOUSEPTR ms;
  6593.  
  6594.                   ms - mouse handle
  6595.  
  6596.              Low level interface function.
  6597.  
  6598.         RETURNS
  6599.  
  6600.              Nothing.
  6601.  
  6602.              Updates - Members of the mouse control block:
  6603.  
  6604.                ms->vmove - vertical move counter since last call
  6605.                ms->hmove - horizontal move counter since last call
  6606.  
  6607.         CAUTIONS and ADDITIONAL NOTES
  6608.  
  6609.              The mouse motion counters are reset after each call.
  6610.  
  6611.  
  6612.  
  6613.  
  6614.  
  6615.  
  6616.  
  6617.  
  6618.  
  6619.  
  6620.  
  6621.  
  6622.  
  6623.  
  6624.  
  6625.  
  6626.  
  6627.  
  6628.  
  6629.  
  6630.  
  6631.  
  6632.  
  6633.  
  6634.  
  6635.  
  6636.  
  6637.  
  6638.  
  6639.  
  6640.  
  6641.  
  6642.  
  6643.                                                            Page: 108
  6644.                                                      The Window BOSS
  6645.  
  6646.  
  6647.  
  6648.         9.70. mo_task -- define mouse event handler
  6649.  
  6650.         USAGE
  6651.  
  6652.              mo_task(m, mask, seg, off)
  6653.              WINDOWPTR m;
  6654.              unsigned int mask, seg, off;
  6655.  
  6656.                   m    - mouse handle
  6657.                   mask - event mask
  6658.                             BIT            EVENT
  6659.                              0             Mouse cursor moved
  6660.                              1             Left Button pressed
  6661.                              2             Left button released
  6662.                              3             Right button pressed
  6663.                              4             Right button released
  6664.                              5             Middle button pressed
  6665.                              6             Middle button released
  6666.                   seg  - segment address of handler routine
  6667.                   off  - offset portion of handler routine address
  6668.  
  6669.              This function, if properly implemented, can keep your code 
  6670.              free of frequent mouse checks.  The basic notion is to 
  6671.              "attach" a function in your program to the mouse device 
  6672.              driver.  This function would be invoked whenever any one of 
  6673.              the above events took place.  Your function would then 
  6674.              execute at interrupt level.  There are a few shortcomings; 
  6675.              however, your function can not perform any I/O, make any 
  6676.              calls to DOS or call any of the ROM BIOS routines.  What can 
  6677.              it do?  Actually not much other than record the fact than an 
  6678.              event took place and dismiss the interupt.  Your program can 
  6679.              then process the event at its convenience.  
  6680.  
  6681.              The difficulty with using this function is due to the fact 
  6682.              that your function MUST look like an interupt service 
  6683.              routine in both the way it beings executing and finishes 
  6684.              executing.  This form of code generation is something most 
  6685.              "C" compilers are not very good at, and as a result most of 
  6686.              these handler routines have to be written in assembly 
  6687.              language.  This function is provided as a convenience to 
  6688.              those who are familar with writing these types of programs - 
  6689.              it is not supported by Star Guidance.
  6690.  
  6691.         RETURNS
  6692.  
  6693.              Nothing.
  6694.  
  6695.         CAUTIONS and ADDITIONAL NOTES
  6696.  
  6697.              This is an unsupported function.
  6698.  
  6699.              Refer to the Microsoft and/or Logitech API manuals for a 
  6700.              complete description of mouse function 12.
  6701.  
  6702.  
  6703.  
  6704.                                                            Page: 109
  6705.                                                      The Window BOSS
  6706.  
  6707.  
  6708.  
  6709.         9.71. mo_lpon -- mouse light pen emulation on
  6710.         9.72. mo_lpoff -- mouse light pen emulation off
  6711.  
  6712.         USAGE
  6713.  
  6714.              mo_lpon(ms)
  6715.              MOUSEPTR ms;
  6716.  
  6717.              mo_lpoff(ms)
  6718.              MOUSEPTR ms;
  6719.  
  6720.                   ms - mouse handle
  6721.  
  6722.              These functions allow software that exepects to find a light 
  6723.              pen to respond (or not to respond) to the mouse as if it 
  6724.              were a light pen.  By default, light pen emluation is 
  6725.              enabled - mo_reset() automatically turns on light pen 
  6726.              emulation.
  6727.  
  6728.              Low level and applications level interface function.
  6729.  
  6730.         RETURNS
  6731.  
  6732.              Nothing.
  6733.  
  6734.         CAUTIONS and ADDITIONAL NOTES
  6735.  
  6736.              None.
  6737.  
  6738.  
  6739.         9.73. mo_ratio -- set motion to pixel ratio
  6740.  
  6741.         USAGE
  6742.  
  6743.              mo_ratio(ms)
  6744.              MOUSEPTR ms;
  6745.  
  6746.                   ms - mouse handle
  6747.  
  6748.              Set the motion to pixel ratio (graphics mode).
  6749.  
  6750.              Low level interface function.
  6751.  
  6752.         RETURNS
  6753.  
  6754.              Nothing.
  6755.  
  6756.         CAUTIONS and ADDITIONAL NOTES
  6757.  
  6758.              This is an unsupported function.
  6759.  
  6760.              Refer to the Microsoft and/or Logitech API manuals for a 
  6761.              complete description of mouse function 15.
  6762.  
  6763.  
  6764.  
  6765.                                                            Page: 110
  6766.                                                      The Window BOSS
  6767.  
  6768.  
  6769.  
  6770.         9.74. mo_rcpos -- return current position of mouse
  6771.  
  6772.         USAGE
  6773.  
  6774.              mo_rcpos(ms, status, row, col)
  6775.              MOUSEPTR ms;
  6776.              int *status, *row, *col;
  6777.  
  6778.                   ms      - mouse handle
  6779.                   *status - pointer to int to receive mouse status
  6780.                               bit 0 set if left button is CURRENTLY down 
  6781.                               bit 1 set if right button is CURRENTLY down
  6782.                               bit 2 set if center button is CURRENTLY down
  6783.                   *row    - pointer to int to receive position
  6784.                             of mouse row (0-25)
  6785.                   *col    - pointer to int to receive position
  6786.                             of mouse column (0-79)
  6787.  
  6788.              Applications level interface function.
  6789.  
  6790.         RETURNS
  6791.  
  6792.              Nothing.
  6793.  
  6794.              Updates - Members of the mouse control block:
  6795.  
  6796.                ms->bstat - bit 0 set if left button is CURRENTLY down 
  6797.                            bit 1 set if right button is CURRENTLY down
  6798.                            bit 2 set if center button is CURRENTLY down
  6799.                                       
  6800.                ms->row   - mouse pixel row location 
  6801.                ms->col   - mouse pixel col location
  6802.  
  6803.  
  6804.                                                      continued....
  6805.  
  6806.  
  6807.  
  6808.  
  6809.  
  6810.  
  6811.  
  6812.  
  6813.  
  6814.  
  6815.  
  6816.  
  6817.  
  6818.  
  6819.  
  6820.  
  6821.  
  6822.  
  6823.  
  6824.  
  6825.  
  6826.                                                            Page: 111
  6827.                                                      The Window BOSS
  6828.  
  6829.  
  6830.  
  6831.         mo_rcpos - continued.
  6832.  
  6833.  
  6834.  
  6835.              CAUTIONS and ADDITIONAL NOTES
  6836.  
  6837.              Example:
  6838.  
  6839.                   #include "windows.h"
  6840.                   main()
  6841.                   {
  6842.                   MOUSEPTR ms;
  6843.                   int st, row, col;
  6844.                        ms=mo_reset();           /* init mouse */
  6845.                        if(ms) {
  6846.                                                 /* fetch status */
  6847.                             mo_rcpos(ms, &st, &row, &col);
  6848.                             mo_show(ms);        /* show mouse */
  6849.                             v_getch();          /* wait for key hit */
  6850.                             mo_hide(ms);        /* hide mouse */
  6851.                             exit(0);            /* finito */
  6852.                        }
  6853.                        else {
  6854.                             ... no mouse
  6855.                        }
  6856.                   }
  6857.                   /* End */
  6858.  
  6859.              Note the use of pointers.
  6860.  
  6861.              All information is reported in real time.  If the mouse is 
  6862.              in the process of being moved the information returned may 
  6863.              not be indicative of the final destination. 
  6864.  
  6865.              Making infrequent calls to this routine can cause your 
  6866.              program to miss button clicks. 
  6867.  
  6868.              The recommended way to obtain accurate information is by 
  6869.              using mo_wait in conjunction with mo_rcpos.
  6870.  
  6871.              See also mo_pos(), mo_wait()
  6872.  
  6873.  
  6874.  
  6875.  
  6876.  
  6877.  
  6878.  
  6879.  
  6880.  
  6881.  
  6882.  
  6883.  
  6884.  
  6885.  
  6886.  
  6887.                                                            Page: 112
  6888.                                                      The Window BOSS
  6889.  
  6890.  
  6891.  
  6892.         9.75. mo_locate -- locate (position) mouse cursor
  6893.  
  6894.         USAGE
  6895.  
  6896.              mo_locate(ms, row, col)
  6897.              MOUSEPTR ms;
  6898.              int row, col;
  6899.  
  6900.                   ms   - mouse handle
  6901.                   row  - destination row (0-24)
  6902.                   col  - destination column (0-79)
  6903.  
  6904.              mo_locate positions the mouse to the row and column 
  6905.              specified.
  6906.  
  6907.              Applications level interface function.
  6908.  
  6909.         RETURNS
  6910.  
  6911.              Nothing.
  6912.  
  6913.         CAUTIONS and ADDITIONAL NOTES
  6914.  
  6915.              Example:
  6916.  
  6917.                   #include "windows.h"
  6918.                   main()
  6919.                   {
  6920.                   MOUSEPTR ms;
  6921.                   int st, row, col;
  6922.                        ms=mo_reset();           /* init mouse */
  6923.                        if(ms) {
  6924.                                                 /* fetch status */
  6925.                             mo_rcpos(ms, &st, &row, &col);
  6926.                             if(row != 0)        /* home the mouse ?? */
  6927.                               mo_locate(ms, 0, 0);
  6928.                             mo_show(ms);        /* show mouse */
  6929.                             v_getch();          /* wait for key hit */
  6930.                             mo_hide(ms);        /* hide mouse */
  6931.                             exit(0);            /* finito */
  6932.                        }
  6933.                        else {
  6934.                             ... no mouse
  6935.                        }
  6936.                   }
  6937.                   /* End */
  6938.  
  6939.              Values are not range checked.
  6940.  
  6941.  
  6942.  
  6943.  
  6944.  
  6945.  
  6946.  
  6947.  
  6948.                                                            Page: 113
  6949.                                                      The Window BOSS
  6950.  
  6951.  
  6952.  
  6953.         9.76. mo_press -- get mouse button press status
  6954.  
  6955.         USAGE
  6956.  
  6957.              mo_press(ms, button, status, nclick, row, col)
  6958.              MOUSEPTR ms;
  6959.              int button;
  6960.              int *status, *nclick, *row, *col;
  6961.  
  6962.                   ms      - mouse handle
  6963.                   button  - button of interest (MO_LEFT or MO_RIGHT)
  6964.                   status  - pointer to int to receive status information.
  6965.                               bit 0 set if left button is CURRENTLY down 
  6966.                               bit 1 set if right button is CURRENTLY down
  6967.                               bit 2 set if center button is CURRENTLY down
  6968.                   nclick  - pointer to int to receive number of times the 
  6969.                             mouse button specified by button has been 
  6970.                             pressed since last call. Zero indicates the 
  6971.                             button has not been pressed since the last 
  6972.                             call.
  6973.                   row     - pointer to int to receive row (0-24) of last 
  6974.                             button press.
  6975.                   col     - pointer to int to receive column (0-79) of 
  6976.                             last button press.
  6977.  
  6978.              Applications level interface function.
  6979.  
  6980.         RETURNS
  6981.  
  6982.              Nothing.
  6983.  
  6984.              Updates - Members of the mouse control block:
  6985.  
  6986.                ms->bstat  - bit 0 set if left button is CURRENTLY down 
  6987.                             bit 1 set if right button is CURRENTLY down
  6988.                             bit 2 set if center button is CURRENTLY down
  6989.                ms->nclick - number of times the requested button has been 
  6990.                             pressed since last call.
  6991.                ms->row    - mouse pixel row location of last press
  6992.                ms->col    - mouse pixel col location of last press
  6993.  
  6994.  
  6995.                                                      continued....
  6996.  
  6997.  
  6998.  
  6999.  
  7000.  
  7001.  
  7002.  
  7003.  
  7004.  
  7005.  
  7006.  
  7007.  
  7008.  
  7009.                                                            Page: 114
  7010.                                                      The Window BOSS
  7011.  
  7012.  
  7013.  
  7014.         mo_press - continued.
  7015.  
  7016.  
  7017.  
  7018.         CAUTIONS and ADDITIONAL NOTES
  7019.  
  7020.              Example:
  7021.  
  7022.                   #include "windows.h"
  7023.                   main()
  7024.                   {
  7025.                   MOUSEPTR ms;
  7026.                   int st, row, col;
  7027.                        ms=mo_reset();           /* init mouse */
  7028.                        if(ms) {
  7029.                                                 /* fetch status */
  7030.                           mo_rcpos(ms, &st, &row, &col);
  7031.                           if(row != 0)          /* home the mouse ?? */
  7032.                             mo_locate(ms, 0, 0);
  7033.                           mo_show(ms);          /* show mouse */
  7034.                           do {                  /* loop till press */
  7035.                             mo_wait(ms);        /* let mouse settle */
  7036.                             mo_press(ms, MO_LEFT, &st, &nc, &row, &col);
  7037.                           } while(!nc); 
  7038.                           mo_hide(ms);          /* hide mouse */
  7039.                           exit(0);              /* finito */
  7040.                        }
  7041.                        else {
  7042.                             ... no mouse
  7043.                        }
  7044.                   }
  7045.                   /* End */
  7046.  
  7047.              Note use of POINTERS.
  7048.  
  7049.              MO_LEFT and MO_RIGHT are defined in "windows.h"
  7050.  
  7051.              Calling mo_press clears the mouse's pressed button history 
  7052.              counters.
  7053.  
  7054.              Since mo_release waits for the mouse button to be released 
  7055.              before updating the device drivers internal tables, it is a 
  7056.              better choice for most applications.
  7057.  
  7058.              Also see "mo_pbinfo"
  7059.  
  7060.  
  7061.  
  7062.  
  7063.  
  7064.  
  7065.  
  7066.  
  7067.  
  7068.  
  7069.  
  7070.                                                            Page: 115
  7071.                                                      The Window BOSS
  7072.  
  7073.  
  7074.  
  7075.         9.77. mo_release -- get mouse button release status
  7076.  
  7077.         USAGE
  7078.  
  7079.              mo_release(ms, button, status, nclick, row, col)
  7080.              MOUSEPTR ms;
  7081.              int button;
  7082.              int *status, *nclick, *row, *col;
  7083.  
  7084.                   ms      - mouse handle
  7085.                   button  - button of interest (MO_LEFT or MO_RIGHT)
  7086.                   status  - pointer to int to receive status information.
  7087.                               bit 0 set if left button has been pressed 
  7088.                               and released.
  7089.                               bit 1 set if right button has been pressed 
  7090.                               and released.
  7091.                               bit 2 set if center button has been pressed 
  7092.                               and released.
  7093.                   nclick  - pointer to int to receive number of times the 
  7094.                             mouse button specified by button has been 
  7095.                             pressed and released since last call. Zero 
  7096.                             indicates the button has not been released
  7097.                             since the last call.
  7098.                   row     - pointer to int to receive row (0-24) of last 
  7099.                             button release.
  7100.                   col     - pointer to int to receive column (0-79) of 
  7101.                             last button release.
  7102.  
  7103.              Applications level interface function.
  7104.  
  7105.         RETURNS
  7106.  
  7107.              Nothing. 
  7108.  
  7109.              Updates - Members of the mouse control block:
  7110.  
  7111.                ms->bstat  - bit 0 set if left has been released 
  7112.                             bit 1 set if right button has been released
  7113.                             bit 2 set if center button "   "    "
  7114.                ms->nclick - number of times the requested button has been 
  7115.                             pressed and released since last call.
  7116.                ms->row    - mouse pixel row location of last release
  7117.                ms->col    - mouse pixel col location of last release 
  7118.  
  7119.  
  7120.                                                 continued....
  7121.  
  7122.  
  7123.  
  7124.  
  7125.  
  7126.  
  7127.  
  7128.  
  7129.  
  7130.  
  7131.                                                            Page: 116
  7132.                                                      The Window BOSS
  7133.  
  7134.  
  7135.  
  7136.         mo_release - continued.
  7137.  
  7138.  
  7139.  
  7140.         CAUTIONS and ADDITIONAL NOTES
  7141.  
  7142.              Example:
  7143.  
  7144.                   #include "windows.h"
  7145.                   main()
  7146.                   {
  7147.                   MOUSEPTR ms;
  7148.                   int st, nc, row, col;
  7149.                        ms=mo_reset();           /* init mouse */
  7150.                        if(ms) {
  7151.                                                 /* fetch status */
  7152.                           mo_rcpos(ms, &st, &row, &col);
  7153.                           if(row != 0)          /* home the mouse ?? */
  7154.                             mo_locate(ms, 0, 0);
  7155.                           mo_show(ms);          /* show mouse */
  7156.                           do {                  /* loop till release */
  7157.                             mo_wait(ms);        /* let mouse settle */
  7158.                             mo_release(ms, MO_LEFT, &st, &nc, &row, &col);
  7159.                           } while(!nc); 
  7160.                           mo_hide(ms);          /* hide mouse */
  7161.                           exit(0);              /* finito */
  7162.                        }
  7163.                        else {
  7164.                             ... no mouse
  7165.                        }
  7166.                   }
  7167.                   /* End */
  7168.  
  7169.              Note use of POINTERS.
  7170.  
  7171.              The mouse device driver waits for the user to RELEASE the 
  7172.              specified button before it updates the internal counters.
  7173.  
  7174.              MO_LEFT and MO_RIGHT are defined in "windows.h"
  7175.  
  7176.              Calling mo_release clears the mouse's pressed button history 
  7177.              counters.
  7178.  
  7179.              Also see "mo_rbinfo", "mo_pbinfo", "mo_press"
  7180.  
  7181.  
  7182.  
  7183.  
  7184.  
  7185.  
  7186.  
  7187.  
  7188.  
  7189.  
  7190.  
  7191.  
  7192.                                                            Page: 117
  7193.                                                      The Window BOSS
  7194.  
  7195.  
  7196.  
  7197.         9.78. mo_reigon -- set mouse region
  7198.  
  7199.         USAGE
  7200.  
  7201.              mo_reigon(ms, row, col, width, height)
  7202.              MOUSEPTR ms;
  7203.              int row, col, width, height;
  7204.  
  7205.                   ms     - mouse pointer
  7206.                   row    - upper left hand corner row
  7207.                   col    - upper left hand corner column
  7208.                   width  - width of region (# of columns 1 to 80)
  7209.                   height - height of region (# of rows 1 to 25)
  7210.  
  7211.              mo_reigon defines the boundaries of where the mouse may 
  7212.              move.  Establishes a fence/cage around the mouse.
  7213.  
  7214.         RETURNS
  7215.  
  7216.              Nothing.
  7217.  
  7218.         CAUTIONS and ADDITIONAL NOTES
  7219.  
  7220.              Example:
  7221.  
  7222.                   #include "windows.h"
  7223.                   main()
  7224.                   {
  7225.                   MOUSEPTR ms;
  7226.                   int st, nc, row, col;
  7227.                        ms=mo_reset();           /* init mouse */
  7228.                        if(ms) {
  7229.                                                 /* fetch status */
  7230.                           mo_rcpos(ms, &st, &row, &col);
  7231.                           if(row != 0)          /* home the mouse ?? */
  7232.                             mo_locate(ms, 0, 0);
  7233.                           mo_reigon(ms, 0, 0, 40, 12); /* 40x12 */
  7234.                           mo_show(ms);          /* show mouse */
  7235.                           do {                  /* loop till release */
  7236.                             mo_wait(ms);        /* let mouse settle */
  7237.                             mo_release(ms, MO_LEFT, &st, &nc, &row, &col);
  7238.                           } while(!nc); 
  7239.                           mo_hide(ms);          /* hide mouse */
  7240.                           exit(0);              /* finito */
  7241.                        }
  7242.                        else {
  7243.                             ... no mouse
  7244.                        }
  7245.                   }
  7246.                   /* End */
  7247.  
  7248.  
  7249.  
  7250.  
  7251.  
  7252.  
  7253.                                                            Page: 118
  7254.                                                      The Window BOSS
  7255.  
  7256.  
  7257.  
  7258.         9.79. mo_setptr -- set mouse pointer and attributes
  7259.  
  7260.         USAGE
  7261.  
  7262.              mo_setptr(ms, tchar, atrib)
  7263.              MOUSEPTR ms;
  7264.              unsigned int tchar, atrib;
  7265.  
  7266.                   ms    - mouse handle
  7267.                   tchar - character to be used as the mouse cursor, valid 
  7268.                           range is 0 to 255 although a value of 0 makes 
  7269.                           no sense at all!
  7270.                   atrib - attribute to be used.  The attribute byte 
  7271.                           contains the background specific data in the 
  7272.                           upper 4 bits and the foreground specific data 
  7273.                           in the lower 4 bits.  Color and bit definitions 
  7274.                           can be found in windows.h. You can use a 
  7275.                           statement as follows to set atrib:
  7276.  
  7277.                             atrib = (bground << 4 | fground);
  7278.  
  7279.         RETURNS
  7280.  
  7281.              Nothing.
  7282.  
  7283.         CAUTIONS and ADDITIONAL NOTES
  7284.  
  7285.              To set the mouse cursor to a white happy face on a backgound 
  7286.              use the following:
  7287.  
  7288.                   atrib = BLACK<<4 | WHITE;
  7289.                   mo_setptr(ms, 0x03, atrib);
  7290.  
  7291.              Attributes are defined in windows.h.
  7292.  
  7293.  
  7294.  
  7295.  
  7296.  
  7297.  
  7298.  
  7299.  
  7300.  
  7301.  
  7302.  
  7303.  
  7304.  
  7305.  
  7306.  
  7307.  
  7308.  
  7309.  
  7310.  
  7311.  
  7312.  
  7313.  
  7314.                                                            Page: 119
  7315.                                                      The Window BOSS
  7316.  
  7317.  
  7318.  
  7319.         9.80. mo_wait -- wait for mouse to settle
  7320.  
  7321.         USAGE
  7322.  
  7323.              mo_wait(ms)
  7324.              MOUSEPTR ms;
  7325.  
  7326.                   ms - mouse handle.
  7327.  
  7328.              Calling mo_wait causes your progam to pause until the mouse 
  7329.              has settled - completely stopped and with its buttons up and 
  7330.              no activity in progress.  
  7331.  
  7332.         RETURNS
  7333.  
  7334.              Nothing.
  7335.  
  7336.         CAUTIONS and ADDITIONAL NOTES
  7337.  
  7338.              Example:
  7339.  
  7340.                   #include "windows.h"
  7341.                   main()
  7342.                   {
  7343.                   MOUSEPTR ms;
  7344.                   int st, nc, row, col;
  7345.                   unsigned atrib;
  7346.                        ms=mo_reset();           /* init mouse */
  7347.                        if(ms) {                 /* fetch status */
  7348.                           mo_rcpos(ms, &st, &row, &col);
  7349.                           if(row != 0)          /* home the mouse ?? */
  7350.                             mo_locate(ms, 0, 0);
  7351.                           mo_reigon(ms, 0, 0, 40, 12); /* 40x12 */
  7352.                           atrib = BLACK<<4 | WHITE;
  7353.                           mo_setptr(ms, 0x03, atrib);
  7354.                           mo_show(ms);          /* show mouse */
  7355.                           do {                  /* loop till release */
  7356.                             mo_wait(ms);        /* let mouse settle */
  7357.                             mo_release(ms, MO_LEFT, &st, &nc, &row, &col);
  7358.                           } while(!nc); 
  7359.                           mo_hide(ms);          /* hide mouse */
  7360.                           exit(0);              /* finito */
  7361.                        }
  7362.                        else {
  7363.                             ... no mouse
  7364.                        }
  7365.                   }
  7366.                   /* End */
  7367.  
  7368.  
  7369.  
  7370.  
  7371.  
  7372.  
  7373.  
  7374.  
  7375.                                                            Page: 120
  7376.                                                      The Window BOSS
  7377.  
  7378.  
  7379.  
  7380.         9.81. mo_nbutt -- get mouse button count
  7381.  
  7382.         USAGE
  7383.  
  7384.              (int) mo_nbutt(ms)
  7385.              MOUSEPTR ms;
  7386.  
  7387.                   ms - mouse handle
  7388.  
  7389.         RETURNS
  7390.  
  7391.              Number of buttons on mouse.
  7392.  
  7393.         CAUTIONS and ADDITIONAL NOTES
  7394.  
  7395.              None.
  7396.  
  7397.  
  7398.  
  7399.  
  7400.  
  7401.  
  7402.  
  7403.  
  7404.  
  7405.  
  7406.  
  7407.  
  7408.  
  7409.  
  7410.  
  7411.  
  7412.  
  7413.  
  7414.  
  7415.  
  7416.  
  7417.  
  7418.  
  7419.  
  7420.  
  7421.  
  7422.  
  7423.  
  7424.  
  7425.  
  7426.  
  7427.  
  7428.  
  7429.  
  7430.  
  7431.  
  7432.  
  7433.  
  7434.  
  7435.  
  7436.                                                            Page: 121
  7437.                                                      The Window BOSS
  7438.  
  7439.  
  7440.  
  7441.         9.82. _getca -- get character and attribute
  7442.  
  7443.         USAGE
  7444.  
  7445.           unsigned int _getca(page, row, col)
  7446.           int page, row, col;
  7447.  
  7448.  
  7449.                 page - video page #
  7450.                 row -  row value (0-24)
  7451.                 col -  column value (0-79)
  7452.  
  7453.           _getca fetches the character and attribute at the screen 
  7454.           coordinates defined by row and column.  _getca is a general 
  7455.           purpose routine and can be used outside of the window 
  7456.           environment.
  7457.  
  7458.         RETURNS
  7459.  
  7460.           The character and attribute as an unsigned int.  The attribute 
  7461.           is in the upper byte, the character is in the lower byte.
  7462.  
  7463.         CAUTIONS and ADDITIONAL NOTES
  7464.  
  7465.           None.
  7466.  
  7467.  
  7468.  
  7469.         9.83. _putca -- put character and attribute 
  7470.  
  7471.         USAGE
  7472.  
  7473.           _putca(page, atch, row, col);
  7474.           int page, row, col;
  7475.           unsigned atch;
  7476.  
  7477.                 page - video page #
  7478.                 atch - attribute and character
  7479.                          attribute in high order byte
  7480.                          character in low order byte
  7481.                 row -  row position for character (0-24)
  7482.                 col -  column position for character (0-79)
  7483.  
  7484.           _putch is a general purpose routine that can be used outside of 
  7485.           the window environment.
  7486.  
  7487.         RETURNS
  7488.  
  7489.           Nothing.
  7490.  
  7491.         CAUTIONS and ADDITIONAL NOTES
  7492.  
  7493.           None.
  7494.  
  7495.  
  7496.  
  7497.                                                            Page: 122
  7498.                                                      The Window BOSS
  7499.  
  7500.  
  7501.  
  7502.         9.84. _vidblt -- video block transfer
  7503.  
  7504.         USAGE
  7505.  
  7506.           _vidblt(sseg, soff, dseg, doff, n);
  7507.           unsigned sseg, soff, dseg, doff;
  7508.           int n;
  7509.  
  7510.                 sseg - source segment
  7511.                 soff - source offset
  7512.                 dseg - destination segment
  7513.                 doff - destination offset
  7514.                 n -    number of bytes to BLT
  7515.  
  7516.           _vidblt is similar to the lattice movedata() function except 
  7517.           that it waits for the video retrace signal before performing 
  7518.           the block transfer.
  7519.  
  7520.           _vidblt is a general purpose function that can be used outside 
  7521.           of the window environment.
  7522.  
  7523.         RETURNS
  7524.  
  7525.           Nothing
  7526.  
  7527.         CAUTIONS and ADDITIONAL NOTES
  7528.  
  7529.           For use in color systems only.
  7530.  
  7531.           _vidblt references wn_sbit.
  7532.  
  7533.  
  7534.  
  7535.         9.85. v_spage -- set active display page
  7536.  
  7537.         USAGE
  7538.  
  7539.           v_spage(page)
  7540.           int page;
  7541.  
  7542.                 page - video page to switch the display to
  7543.  
  7544.           v_spage is a general purpose routine that can be used outside 
  7545.           of the window environment.  
  7546.  
  7547.         RETURNS
  7548.  
  7549.           Nothing.
  7550.  
  7551.         CAUTIONS and ADDITIONAL NOTES
  7552.  
  7553.           Color card only.
  7554.  
  7555.  
  7556.  
  7557.  
  7558.                                                            Page: 123
  7559.                                                      The Window BOSS
  7560.  
  7561.  
  7562.  
  7563.         9.86. v_cls -- clear entire video screen 
  7564.  
  7565.         USAGE
  7566.  
  7567.           v_cls(atrib)
  7568.           int atrib;
  7569.  
  7570.                 atrib - attribute to be used 
  7571.  
  7572.           v_cls clears the entire video screen to the specified attribute 
  7573.           and places the cursor in the upper left hand corner of the 
  7574.           screen.
  7575.  
  7576.           v_cls is a general purpose routine that can be used outside of 
  7577.           the window environment. 
  7578.  
  7579.           Attributes are defined in windows.h.
  7580.  
  7581.         RETURNS
  7582.  
  7583.           Nothing.
  7584.  
  7585.         CAUTIONS and ADDITIONAL NOTES
  7586.  
  7587.           None.
  7588.  
  7589.  
  7590.  
  7591.         9.87. v_smode -- set video mode
  7592.  
  7593.         USAGE
  7594.  
  7595.           v_smode(mode)
  7596.           int mode;
  7597.  
  7598.                 mode - mode to set the display to
  7599.  
  7600.           v_smode is a general purpose routine which can be used outside 
  7601.           of the window environment.
  7602.  
  7603.           Modes are defined in windows.h.
  7604.  
  7605.         RETURNS
  7606.  
  7607.           Nothing.
  7608.  
  7609.         CAUTIONS and ADDITIONAL NOTES
  7610.  
  7611.           None.
  7612.  
  7613.  
  7614.  
  7615.  
  7616.  
  7617.  
  7618.  
  7619.                                                            Page: 124
  7620.                                                      The Window BOSS
  7621.  
  7622.  
  7623.  
  7624.         9.88. v_wca -- write character and attribute
  7625.  
  7626.         USAGE
  7627.  
  7628.           v_wca(page, char, atrib, count);
  7629.           int page, char, atrib, count;
  7630.  
  7631.                 page -  video page #
  7632.                 char -  character to write
  7633.                 atrib - attribute to use
  7634.                 count - number of times to repeat
  7635.  
  7636.           v_wca writes the character defined by char count times starting 
  7637.           at the current cursor location.     
  7638.  
  7639.           v_wca is a general purpose routine that can be used outside of 
  7640.           the window environment. 
  7641.  
  7642.           Attributes are defined in windows.h.
  7643.  
  7644.         RETURNS
  7645.  
  7646.           Nothing.
  7647.  
  7648.         CAUTIONS and ADDITIONAL NOTES
  7649.  
  7650.           None.
  7651.  
  7652.  
  7653.  
  7654.         9.89. v_wtty -- write character TTY mode
  7655.  
  7656.         USAGE
  7657.  
  7658.           v_wtty(char);
  7659.           int  char;
  7660.  
  7661.                 char -  character to write
  7662.  
  7663.         v_wtty writes the character defined by char at the current cursor 
  7664.         location.  
  7665.  
  7666.           v_wtty is a general purpose routine that can be used outside of 
  7667.           the window environment. 
  7668.  
  7669.         RETURNS
  7670.  
  7671.           Nothing.
  7672.  
  7673.         CAUTIONS and ADDITIONAL NOTES
  7674.  
  7675.           None.
  7676.  
  7677.  
  7678.  
  7679.  
  7680.                                                            Page: 125
  7681.                                                      The Window BOSS
  7682.  
  7683.  
  7684.  
  7685.         9.90. v_locate -- locate (position) cursor
  7686.  
  7687.         USAGE
  7688.  
  7689.           v_locate(page, row, col);
  7690.           int page, row, col;
  7691.  
  7692.                 page - video page #
  7693.                 row  - row to position to
  7694.                 col  - column to position to
  7695.           
  7696.           v_locate positions the cursor to the absolute coordinates 
  7697.           specified by row and col on the specified page.  The upper left 
  7698.           hand corner of the screen is (0,0).
  7699.  
  7700.           v_locate is a general purpose routine that can be used outside 
  7701.           of the window environment.
  7702.  
  7703.           Row and Col are range checked.  You CAN position the cursor 
  7704.           slightly (25,80) off the screen.
  7705.  
  7706.         RETURNS
  7707.  
  7708.           Nothing.
  7709.  
  7710.         CAUTIONS and ADDITIONAL NOTES
  7711.  
  7712.           None.
  7713.  
  7714.  
  7715.  
  7716.         9.91. v_hidec -- hide cursor
  7717.  
  7718.         USAGE
  7719.  
  7720.           v_hidec();
  7721.  
  7722.           The physical cursor is located off the screen.
  7723.  
  7724.           This function does not affect any virtual cursor coordinates, 
  7725.           it simply hides the physical cursor from view.
  7726.  
  7727.         RETURNS
  7728.  
  7729.           Nothing.
  7730.  
  7731.         CAUTIONS and ADDITIONAL NOTES
  7732.  
  7733.           None.
  7734.  
  7735.  
  7736.  
  7737.  
  7738.  
  7739.  
  7740.  
  7741.                                                            Page: 126
  7742.                                                      The Window BOSS
  7743.  
  7744.  
  7745.  
  7746.         9.92. v_sctype -- set cursor type (style)
  7747.  
  7748.         USAGE
  7749.  
  7750.           v_sctype(type, start, end);
  7751.           int type, start, end;
  7752.  
  7753.                 type -  cursor style code 
  7754.                         (0=hidden, 1=normal, 2=slow, 3=fast)
  7755.                 start - start scan line
  7756.                 end -   end scan line
  7757.  
  7758.           As an example, to set a slow flashing block style cursor invoke 
  7759.           this function with type=1, start=6, and end=12 (color card).
  7760.  
  7761.         RETURNS
  7762.  
  7763.           Nothing.
  7764.  
  7765.         CAUTIONS and ADDITIONAL NOTES
  7766.  
  7767.           Color and Monochrome adapters only. 
  7768.           Not for use on the 3270 PC or Enhanced Graphics Adapters.
  7769.  
  7770.  
  7771.         9.93. v_sapu -- scroll active display page up
  7772.  
  7773.         USAGE
  7774.  
  7775.           v_sapu(nl, rul, cul, rlr, clr, atrib);
  7776.           int nl, rul, cul, rlr, clr, atrib;
  7777.  
  7778.                 nl  - number of lines to scroll
  7779.                 rul - row of upper left hand corner of scroll area
  7780.                 cul - column of upper left hand corner of scroll area
  7781.                 rlr - row of lower right corner of scroll area
  7782.                 clr - column of lower right corner of scroll area
  7783.                 atrib - attribute to be used for blanking
  7784.  
  7785.           A value of 0 for nl scrolls (blanks) the entire area.  To clear 
  7786.           the entire video screen use v_sapu(0, 0, 0, 24, 79, NORMAL).
  7787.  
  7788.           v_sapu is a general purpose routine that can be used outside of 
  7789.           the window environment.  
  7790.  
  7791.           Attributes are defined in windows.h.
  7792.  
  7793.         RETURNS
  7794.  
  7795.           Nothing.
  7796.  
  7797.         CAUTIONS and ADDITIONAL NOTES
  7798.  
  7799.           None.
  7800.  
  7801.  
  7802.                                                            Page: 127
  7803.                                                      The Window BOSS
  7804.  
  7805.  
  7806.  
  7807.         9.94. v_sapd -- scroll active display page down
  7808.  
  7809.         USAGE
  7810.  
  7811.           v_sapd(nl, rul, cul, rlr, clr, atrib);
  7812.           int nl, rul, cul, rlr, clr, atrib;
  7813.  
  7814.                 nl  - number of lines to scroll
  7815.                 rul - row of upper left hand corner of scroll area
  7816.                 cul - column of upper left hand corner of scroll area
  7817.                 rlr - row of lower right corner of scroll area
  7818.                 clr - column of lower right corner of scroll area
  7819.                 atrib - attribute to be used for blanking
  7820.  
  7821.           v_sapd is a general purpose routine that can be used outside of 
  7822.           the window environment.  
  7823.  
  7824.           A value of 0 for nl scrolls (blanks) the entire area.  To clear 
  7825.           the entire video screen use v_sapd(0, 0, 0, 24, 79, NORMAL).
  7826.  
  7827.           Attributes are defined in windows.h.
  7828.  
  7829.         RETURNS
  7830.  
  7831.           Nothing.
  7832.  
  7833.         CAUTIONS and ADDITIONAL NOTES
  7834.  
  7835.           None.
  7836.  
  7837.  
  7838.         9.95. v_rcpos -- return current cursor position
  7839.  
  7840.         USAGE
  7841.  
  7842.           v_rcpos(page, row, col);
  7843.           int page;
  7844.           int *row, *col;       /* POINTERS */
  7845.  
  7846.                 int page - video page #     
  7847.                 int *row - pointer to int to receive row value
  7848.                 int *col - pointer to int to receive column value
  7849.  
  7850.           v_rcpos is a general purpose routine that can be used outside 
  7851.           of the window environment.  
  7852.  
  7853.         RETURNS
  7854.  
  7855.           Nothing.
  7856.  
  7857.         CAUTIONS and ADDITIONAL NOTES
  7858.  
  7859.           None.
  7860.  
  7861.  
  7862.  
  7863.                                                            Page: 128
  7864.                                                      The Window BOSS
  7865.  
  7866.  
  7867.  
  7868.         9.96. v_rcvs -- return current video state
  7869.  
  7870.         USAGE
  7871.  
  7872.           v_rcvs(page, vm, cols);
  7873.           int *page, *vm, *cols;        /* POINTERS */
  7874.  
  7875.                 int *page - pointer to int to receive current video page #
  7876.                 int *vm   - pointer to int to receive current video mode
  7877.                 int *cols - pointer to int to receive current screen width
  7878.           
  7879.           v_rcvs is a general purpose routine that can be used outside of 
  7880.           the window environment.
  7881.  
  7882.           Modes are defined in windows.h.
  7883.  
  7884.         RETURNS
  7885.  
  7886.           Nothing.
  7887.  
  7888.         CAUTIONS and ADDITIONAL NOTES
  7889.  
  7890.           None.
  7891.  
  7892.  
  7893.  
  7894.         9.97. v_getch -- get keyboard character and scan code
  7895.  
  7896.         USAGE
  7897.  
  7898.           v_getch();
  7899.  
  7900.           v_getch is a general purpose routine that can be used outside 
  7901.           of the window environment.
  7902.  
  7903.         RETURNS
  7904.  
  7905.           The character and scan code.  The character is in the low order 
  7906.           byte, the scan code in the high order byte.
  7907.  
  7908.         CAUTIONS and ADDITIONAL NOTES
  7909.  
  7910.           v_getch waits for a key to be struck.
  7911.  
  7912.  
  7913.  
  7914.  
  7915.  
  7916.  
  7917.  
  7918.  
  7919.  
  7920.  
  7921.  
  7922.  
  7923.  
  7924.                                                            Page: 129
  7925.                                                      The Window BOSS
  7926.  
  7927.  
  7928.  
  7929.         9.98. v_kstat -- get keyboard status
  7930.  
  7931.         USAGE
  7932.  
  7933.           v_kstat();
  7934.  
  7935.           v_kstat is a general purpose routine that can be used outside 
  7936.           of the window environment.
  7937.  
  7938.         RETURNS
  7939.  
  7940.           TRUE if a character is available, FALSE if not.
  7941.  
  7942.         CAUTIONS and ADDITIONAL NOTES
  7943.  
  7944.           None.
  7945.  
  7946.  
  7947.  
  7948.         9.99. v_kflush -- flush keyboard buffer
  7949.  
  7950.         USAGE
  7951.  
  7952.           v_kflush();
  7953.  
  7954.           v_kflush clears the keyboard buffer of any pending input.
  7955.  
  7956.         RETURNS
  7957.  
  7958.           Nothing.
  7959.  
  7960.         CAUTIONS and ADDITIONAL NOTES
  7961.  
  7962.           None.
  7963.  
  7964.  
  7965.  
  7966.         9.100. v_border -- set border color
  7967.  
  7968.         USAGE
  7969.  
  7970.           v_border(color)
  7971.           int color;
  7972.  
  7973.              Set overscan border to specified color. 
  7974.  
  7975.         RETURNS
  7976.  
  7977.           Nothing.
  7978.  
  7979.         CAUTIONS and ADDITIONAL NOTES
  7980.  
  7981.           None.
  7982.  
  7983.  
  7984.  
  7985.                                                            Page: 130
  7986.                                                      The Window BOSS
  7987.  
  7988.  
  7989.  
  7990.         10. Registration Form
  7991.  
  7992.  
  7993.  
  7994.  
  7995.  
  7996.                                 Registration Form
  7997.  
  7998.                             Star Guidance Consulting
  7999.                                  273 Windy Drive 
  8000.                           Waterbury, Connecticut 06705
  8001.                                  (203) 574-2449
  8002.  
  8003.  
  8004.            Company Name:       _______________________________________
  8005.  
  8006.            Name:               _______________________________________
  8007.  
  8008.            Address:            _______________________________________
  8009.  
  8010.                                _______________________________________
  8011.  
  8012.            City, State, Zip:   _______________________________________
  8013.  
  8014.            Country:            _______________________________________
  8015.  
  8016.            Phone:              _______________________________________  
  8017.  
  8018.  
  8019.                   ___ Library Source @ $55.00 USD      $________._____
  8020.                   ___ Shareware      @ $20.00 USD      $________._____
  8021.                       Shipping (Outside USA) $5.00 USD $________._____
  8022.                       Shipping (USA)         $3.50 USD $________._____
  8023.                       Connecticut Sales Tax 8.0%       $_______4.40___ *
  8024.                       (Connecticut residents only)  * 
  8025.                                            TOTAL ------>________._____
  8026.  
  8027.  
  8028.            MasterCard/Visa: ______________________ Exp Date: ____/____
  8029.            (Circle one)
  8030.  
  8031.            Printed Name:    ______________________
  8032.            (On Card)
  8033.                    
  8034.            Signature:       ______________________ Date:____/____/____
  8035.            (Of Card Holder)
  8036.  
  8037.            All funds must be in US Dollars, Call for UPS COD (USA only),
  8038.            Personal and Company Checks Accepted. All checks must be drawn 
  8039.            against a US Bank and payable in US Dollars.
  8040.  
  8041.  
  8042.  
  8043.  
  8044.  
  8045.  
  8046.                                                            Page: 131
  8047.                                                      The Window BOSS
  8048.  
  8049.  
  8050.  
  8051.  
  8052.         A
  8053.         ASMFILES.LZH, 18, 19
  8054.         Aztec C, 33
  8055.         AZTEC.LZH, 18, 19
  8056.         azvlib.asm, 39
  8057.  
  8058.         B
  8059.         Basics
  8060.           Forms, 4
  8061.           Mouse, 8
  8062.           Windows, 4
  8063.         Borland Turbo C, 31
  8064.         BOSS_DOC.LZH, 15, 16
  8065.         BOSS_LB1.LZH, 15, 17, 26
  8066.         BOSS_LB2.LZH, 15, 17
  8067.         BOSS_LB3.LZH, 15, 17
  8068.         BOSS_LB4.LZH, 15, 17
  8069.         BOSS_SUP.LZH, 15, 16, 17, 26
  8070.         Bulletin Board
  8071.           Files, 15
  8072.           Support, 15
  8073.  
  8074.         C
  8075.         C86.LZH, 18, 19
  8076.         CFILES.LZH, 18, 20, 21
  8077.  
  8078.         D
  8079.         Data Entry (Basics), 6
  8080.         DEMO.LZH, 18
  8081.         DLC.LZH, 18, 23
  8082.         dlvlib.asm, 39
  8083.         DOC.LZH, 18
  8084.         dos.mac, 39
  8085.  
  8086.         E
  8087.         Express C, 33
  8088.  
  8089.         F
  8090.         fields, 12
  8091.         forms, 12
  8092.           closing, 12
  8093.         Forms (Basics), 7
  8094.  
  8095.         L
  8096.         Lattice C, 33
  8097.         LC3.LZH, 18, 22
  8098.         LC6.LZH, 22
  8099.         LDATA, 39
  8100.         LHARC.DOC, 18
  8101.         LHARC.EXE, 18
  8102.         LPROG, 39
  8103.         LWIN.LIB, 26
  8104.         LZH Files, 15
  8105.  
  8106.  
  8107.                                                            Page: 132
  8108.                                                      The Window BOSS
  8109.  
  8110.  
  8111.  
  8112.  
  8113.         M
  8114.         macros.asm, 39
  8115.         Microsoft C, 31
  8116.         Microsoft Quick C, 31
  8117.         Mix Power C, 32
  8118.         MIX.LZH, 18, 22
  8119.         model.h, 39
  8120.         Mouse (Basics), 8, 9, 10
  8121.         mo_clim, 104
  8122.         mo_hide, 99
  8123.         mo_locate, 113
  8124.         mo_lpoff, 110
  8125.         mo_lpon, 110
  8126.         mo_motion, 108
  8127.         mo_move, 101
  8128.         mo_nbutt, 121
  8129.         mo_pbinfo, 102
  8130.         mo_pos, 100
  8131.         mo_press, 114
  8132.         mo_ratio, 110
  8133.         mo_rbinfo, 103
  8134.         mo_rcpos, 111
  8135.         mo_reigon, 118
  8136.         mo_release, 116
  8137.         mo_reset, 97
  8138.         mo_rlim, 104
  8139.         mo_scursor, 106
  8140.         mo_setptr, 119
  8141.         mo_sgcursor, 105
  8142.         mo_show, 98
  8143.         mo_task, 109
  8144.         mo_wait, 120
  8145.         MS5.LZH, 18, 24
  8146.         MSQC.LZH, 18, 24
  8147.         msvlib.asm, 39
  8148.         MWIN.MIX, 26
  8149.  
  8150.         P
  8151.         pcvlib.asm, 39
  8152.  
  8153.         R
  8154.         return values, 12
  8155.         REVHST.LZH, 18
  8156.  
  8157.         S
  8158.         Shareware Diskette, 15
  8159.         Source Diskette, 15
  8160.         Support, 2
  8161.         Support Services, 2
  8162.         SWIN.LIB, 26
  8163.  
  8164.  
  8165.  
  8166.  
  8167.  
  8168.                                                            Page: 133
  8169.                                                      The Window BOSS
  8170.  
  8171.  
  8172.  
  8173.         T
  8174.         TC2.LZH, 18, 23
  8175.  
  8176.         V
  8177.         video attributes, 11
  8178.         vlib.asm, 39
  8179.         v_border, 130
  8180.         v_cls, 124
  8181.         v_getch, 129
  8182.         v_hidec, 126
  8183.         v_kflush, 130
  8184.         v_kstat, 130
  8185.         v_locate, 126
  8186.         v_rcpos, 128
  8187.         v_rcvs, 129
  8188.         v_sapd, 128
  8189.         v_sapu, 127
  8190.         v_sctype, 127
  8191.         v_smode, 124
  8192.         v_spage, 123
  8193.         v_wca, 125
  8194.         v_wtty, 125
  8195.  
  8196.         W
  8197.         Watcom C, 33
  8198.         WATCOM.LZH, 18, 25
  8199.         wcvlib.asm, 39
  8200.         window handles, 11
  8201.         window origin, 11
  8202.         windows
  8203.           closing, 12
  8204.           overlapping, 13
  8205.           tiled, 13
  8206.         Windows (Basics), 5
  8207.         WINDOWS.FN5, 27
  8208.         WINDOWS.FNS, 27
  8209.         WINDOWS.FNZ, 27
  8210.         wn_activate, 54
  8211.         wn_boxset, 59
  8212.         wn_close, 46
  8213.         wn_clr, 54
  8214.         wn_color, 55
  8215.         wn_dborder, 60
  8216.         wn_delrow, 53
  8217.         wn_dma, 58
  8218.         wn_dmode, 43
  8219.         wn_dtext, 91
  8220.         wn_exit, 42
  8221.         wn_fixcsr, 58
  8222.         wn_frmcls, 66
  8223.         wn_frmget, 65
  8224.         wn_frmopn, 64
  8225.         wn_gbool, 89
  8226.         wn_gdate, 67
  8227.  
  8228.  
  8229.                                                            Page: 134
  8230.                                                      The Window BOSS
  8231.  
  8232.  
  8233.  
  8234.         wn_gdouble, 87
  8235.         wn_gets, 51
  8236.         wn_gfloat, 85
  8237.         wn_gint, 77
  8238.         wn_glong, 81
  8239.         wn_gltext, 73
  8240.         wn_gphone, 71
  8241.         wn_gpword, 75
  8242.         wn_gtext, 73
  8243.         wn_gtime, 69
  8244.         wn_guint, 79
  8245.         wn_gulong, 83
  8246.         wn_gutext, 73
  8247.         wn_iemsg, 92
  8248.         wn_ihmsg, 93
  8249.         wn_init, 42
  8250.           wn_psinit, 42
  8251.         wn_input, 61
  8252.         wn_insrow, 53
  8253.         wn_locate, 48
  8254.         wn_move, 47
  8255.         wn_natrib, 59
  8256.         wn_open, 44
  8257.         wn_printf, 49
  8258.         wn_psinit, 42
  8259.         wn_putc, 50
  8260.         wn_putca, 52
  8261.         wn_puts, 50
  8262.         wn_putsa, 52
  8263.         wn_restore, 47
  8264.         wn_save, 46
  8265.         wn_scenter, 95
  8266.         wn_scroll, 57
  8267.         wn_sdelspc, 96
  8268.         wn_sleftj, 94
  8269.         wn_srightj, 94
  8270.         wn_strndx, 96
  8271.         wn_sync, 56
  8272.         wn_titla, 45
  8273.         wn_title, 45
  8274.         wn_wrap, 56
  8275.  
  8276.         X
  8277.         XMWIN.LIB, 26
  8278.  
  8279.         Z
  8280.         Zortec C, 32
  8281.         ZTC.LZH, 18, 25
  8282.  
  8283.         _
  8284.         _getca, 122
  8285.         _putca, 122
  8286.         _vidblt, 123
  8287.  
  8288.  
  8289.  
  8290.                                                            Page: 135
  8291.